1

コントローラーでパーシャルをレンダリングする必要がありますが、リクエストへの応答としてレンダリングする必要はありません。問題は、ビューで行うように呼び出すとrender :partial => 'foo'、コントローラーが応答をレンダリングしていると見なすことです。その後、実際の意図した応答 (またはリダイレクト) をレンダリングすると、すばらしいActionController::DoubleRenderError.

class SalesController < ApplicationController
  def send_content_to_some_api
    @sale = Sale.find params[:id]
    SomeApi.send_content(
      render(:partial => 'some_content',
             :locals => { :sale => @sale })
    )

    flash[:notice] = 'Totally just sent that content!'
    redirect_to sale_path(@sale)
  end
end

ビューに配置することでこれを回避できましたが、MVC が壊れているようで、リダイレクトが面倒になります。

コントローラーが応答として使用しようとせずに、文字列の部分的な結果を取得するにはどうすればよいですか?

4

1 に答える 1

2

ActionController::Base#render_to_stringを参照してください

于 2012-10-05T22:16:08.733 に答える