IT TIP

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

itqueen 2020. 10. 20. 19:00
반응형

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
...

참고 URL : https://stackoverflow.com/questions/19260288/rails-4-before-action-pass-parameters-to-invoked-method

반응형