render :file
いつの間にできたんだこんなの。以前の記事で別コントローラのビューを呼び出すのに悪戦苦闘していましたが、これ使えば楽勝みたいですね。
# comments_controller 内部とお考え下さい # post has_many comments とお考え下さい # map.resources の has_many を使って posts/x/comments を post で呼び出したとお考え下さい def create # @post に付随する @comment を作りたいよ! @post = Post.find(params[:post_id]) # @post が見つからなかったら無視 if @post @comment = Comment.new(params[:comment]) # post_id は params[:comment] に入っていないので自分で入れる @comment.post_id = @post.id if @comment.save # セーブできたら普通にリダイレクト redirect_to @post else # エラーの場合メッセージを残したいのでレンダリング # レイアウトは使いたいなら true を指定、デフォルトは false render :file => "#{RAILS_ROOT}/app/views/posts/show.html.erb", :layout => true end end end
注意点は大体普通の render と同じ。こんなことするくらいなら controller オプションを作ってほしい気もしますが、多分そういう使い方は邪道なんでしょう。