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 オプションを作ってほしい気もしますが、多分そういう使い方は邪道なんでしょう。