質問

私は最近1.9(?)から2.3.11にアップグレードしたRailsアプリで機能する前にフィルターを取得するのに苦労しています。それを試してデバッグするために、私はbefore_filterをコントローラーに入れました:

before_filter :false_filter

application_controller.rbの以下:

def false_filter
  puts "false filter running"
  false
end

次に、キュウリ/ウェブラットまたはブラウザのいずれかからメソッドを呼び出します。フィルターが呼び出されている間(メッセージが出力されるプットが表示されます)、フィルターチェーンは終了しません。

生成されていないボイラープレートコードがあるかどうか疑問に思っています。誰もがどこを見るかを提案できますか?

役に立ちましたか?

解決

前のフィルターの返品値に注意を払うものはありません。処理を停止したい場合は、フィルターから何かをレンダリングするか、どこかにリダイレクトする必要があります。 ファインガイドから:

前のフィルターがレンダリングまたはリダイレクトされた場合、アクションは実行されません。そのフィルターの後に実行する予定の追加のフィルターがある場合、それらもキャンセルされます。

同じテキストがに表示されます 5.2.0ガイド.

この動作は理にかなっています。フィルターチェーンが完了しない場合(つまり、途中でフィルタリングを停止するのを停止します)、最終的にはコントローラーメソッドを呼び出すことになります。 、苦しみ、混乱、それはまったく友好的でも楽しいことではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top