[ruby] Rails 4 before_action, 호출 된 메소드에 매개 변수 전달

다음 코드가 있습니다.

class SupportsController < ApplicationController
  before_action :set_support, only: [:show, :edit, :update, :destroy]
  ....

set_support4 개의 뷰 메소드 모두에 적용 할 메소드 에 문자열을 전달할 수 있습니까? 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
...


답변