、私はこれを行うことができます。言い換えれば、私はこのようなことをしたいと思います:before_filterとrespond_toフォーマット私のRailsアプリのコントローラで
before_filter :login_required, :except => {:action => :index, :format => :js}
これは可能ですか?
、私はこれを行うことができます。言い換えれば、私はこのようなことをしたいと思います:before_filterとrespond_toフォーマット私のRailsアプリのコントローラで
before_filter :login_required, :except => {:action => :index, :format => :js}
これは可能ですか?
自分でロールする必要があります。これを出発点として試してみてください。
before_filter :login_required, :except => [:index]
before_filter(:only => :index) do |controller|
login_required unless controller.request.format.js?
end
私は受け入れ答えよりもきれいだと思うもう一つの方法は、ラムダとif
またはunless
オプションを使用することです。他のコントローラのフィルタで標準化されているので、メソッド名をシンボルとしてリストするのが好きです。これはRails 3以降で動作します。
before_filter :login_required, except: :index,
unless: -> { |controller| controller.request.format.js? }
ラムダをメソッドにも抽出できます。これは可読性に役立ちます。また、複数のフィルターで同じチェックを使用するのが簡単になります。
before_filter :login_required, except: :index, unless: :js_request?
private
def js_request?
request.format.js?
end
完璧ですが、私は 'request.format.json? 'を使います。 – inye
ありがとうございました。私はlogin_requiredをcontroller.send(:login_required)に置き換えなければなりませんでした。 before_filter(:only =>:index)do | controller |コントローラ:request.format.js? controller.send(:login_required) end – gdelfino
私が期待していたコードが表示されなかったので、私のコメントを繰り返してください。 login_requiredをcontroller.send(:login_required)に置き換えるだけで済みました。 ありがとうございました。 – gdelfino
gdelfinoのチップで魅力的に働いた – whizcreed