다음 코드가 있습니다.
class SupportsController < ApplicationController
before_action :set_support, only: [:show, :edit, :update, :destroy]
....
set_support
4 개의 뷰 메소드 모두에 적용 할 메소드 에 문자열을 전달할 수 있습니까? set_support
뷰의 각 메서드에 대해 메서드에 다른 문자열을 전달할 수 있습니까?
답변
before_action only: [:show, :edit, :update, :destroy] do
set_support("value")
end
답변
람다를 사용할 수 있습니다.
class SupportsController < ApplicationController
before_action -> { set_support("value") },
only: [:show, :edit, :update, :destroy]
...
답변
짧고 한 줄짜리 답변 (내가 개인적으로 콜백에 선호 함 )은 다음과 같습니다.
before_action except:[:index, :show] { method :param1, :param2 }
또 다른 예:
after_filter only:[:destroy, :kerplode] { method2_namey_name(p1, p2) }
답변
다음 before_action
과 같이 람다를에 전달 params[:action]
하고 set_support
메서드에 전달할 수 있습니다 .
class SupportsController < ApplicationController
before_action only: [:show, :edit, :update, :destroy] {|c| c.set_support params[:action]}
....
그런 다음 전송되는 PARAM은 문자열 중 하나입니다 : 'show'
, 'edit'
, 'update'
또는 'destroy'
.
답변
SupportsController
class SupportsController < ApplicationController
before_action only: [:show, :edit, :update, :destroy] { |ctrl|
ctrl.set_support("the_value")
}
...
ApplicationController
class ApplicationController < ActionController
def set_support (value = "")
p value
end
...