フィルターの前後に繰り返しコードを配置して、コントローラーをドライにするのが好きです。私の現在のプロジェクトでは、すべてのアクションに同じrespond_to
ブロックがあります。
respond_to do |wants|
wants.html
wants.js { render :layout => "transition" }
end
私はこれを次のafter_filter
ように配置しました:
after_filter :respond_to_html_or_transition
しかし、それはこのエラーにつながります:
このアクションでレンダリングやリダイレクトが複数回呼び出されました。render または redirect のみを呼び出すことができ、アクションごとに最大 1 回のみ呼び出すことができることに注意してください。また、redirect も render もアクションの実行を終了しないことに注意してください。そのため、リダイレクト後にアクションを終了する場合は、「redirect_to(...) and return」のようなことを行う必要があります。
respond_to
これは、明示的またはredirect
アクション内にない場合でも発生します。これは、Rails (明示的なrespond_to
呼び出しがないため) が知識に基づいた推測を行いrespond_to
、after_filter
. その場合、Rails がそれを行わないようにして、代わりにブロックを使用する方法はありafter_filter
ますか?