, 나는이 작업을 수행 할 수 있습니다. 즉, 다음과 같이하고 싶습니다.before_filter 및 respond_to 형식 내 레일 응용 프로그램의 컨트롤러에서
before_filter :login_required, :except => {:action => :index, :format => :js}
이것이 가능합니까?
, 나는이 작업을 수행 할 수 있습니다. 즉, 다음과 같이하고 싶습니다.before_filter 및 respond_to 형식 내 레일 응용 프로그램의 컨트롤러에서
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 | controller.send (: login_required) controller.request.format.js가 아닌 경우? end – gdelfino
내가 예상했던대로 코드가 표시되지 않아서 내 의견을 반복하겠습니다. 나는 login_required를 controller.send (: login_required)로 바꿔야 만했습니다. 고마워요. – gdelfino
gdelfino의 팁이있는 매력처럼 작동했습니다. – whizcreed