Ответ 1
before_action only: [:show, :edit, :update, :destroy] do
set_support("value")
end
У меня есть следующий код:
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
Вы можете использовать lambda:
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]}
....
Затем отправляемый параметр является одной из строк: '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
...