コントローラーでパーシャルをレンダリングする必要がありますが、リクエストへの応答としてレンダリングする必要はありません。問題は、ビューで行うように呼び出すと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 が壊れているようで、リダイレクトが面倒になります。
コントローラーが応答として使用しようとせずに、文字列の部分的な結果を取得するにはどうすればよいですか?