2009-04-30 6 views

답변

25

자신 만의 롤을 만들어야합니다. 시작 지점으로 사용해보십시오.

before_filter :login_required, :except => [:index] 

before_filter(:only => :index) do |controller| 
    login_required unless controller.request.format.js? 
end 
+1

감사합니다. login_required를 controller.send (: login_required)로 바꿔야 만했습니다. before_filter (: only => : index) do | controller | controller.send (: login_required) controller.request.format.js가 아닌 경우? end – gdelfino

+0

내가 예상했던대로 코드가 표시되지 않아서 내 의견을 반복하겠습니다. 나는 login_required를 controller.send (: login_required)로 바꿔야 만했습니다. 고마워요. – gdelfino

+0

gdelfino의 팁이있는 매력처럼 작동했습니다. – whizcreed

10

내가 허용 대답 청소기보다라고 생각하는 또 다른 방법은, 람다와 if 또는 unless 옵션을 사용하는 것입니다. 다른 컨트롤러 필터로 표준화되어 있으므로 메서드 이름을 기호로 나열하는 것이 좋습니다. 이것은 Rails 3 이상에서 작동합니다.

before_filter :login_required, except: :index, 
    unless: -> { |controller| controller.request.format.js? } 
13

기억하기 때문에 람다를 추출 할 수도 있습니다. 이렇게하면 가독성을 높일 수 있습니다. 또한 여러 필터에서 동일한 검사를 더 쉽게 사용할 수 있습니다.

before_filter :login_required, except: :index, unless: :js_request? 

private 

def js_request? 
    request.format.js? 
end 
+1

완벽하게 작동하지만'request.format.json? '을 사용합니다. – inye

관련 문제