フィルターの前後に繰り返しコードを配置して、コントローラーをドライにするのが好きです。私の現在のプロジェクトでは、すべてのアクションに同じ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ますか?