У меня такой код:
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 |c| c.set_support(params[:action) 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]} ....
Тогда пары отправленный одна из строк:
'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 ...
источник