Tengo el siguiente código:
class SupportsController < ApplicationController
before_action :set_support, only: [:show, :edit, :update, :destroy]
....
¿Es posible pasar una cadena al método set_support
que se aplicará para los 4 métodos de vista? ¿Es posible pasar una cadena diferente al método set_support
para cada método en la vista?
before_action only: [:show, :edit, :update, :destroy] do |c| c.set_support(params[:action) end
Puedes usar una lambda:
class SupportsController < ApplicationController before_action -> { set_support("value") }, only: [:show, :edit, :update, :destroy] ...
fuente
Una respuesta breve y de una sola línea (que personalmente prefiero para las devoluciones de llamada ) es:
before_action except:[:index, :show] { method :param1, :param2 }
Otro ejemplo:
after_filter only:[:destroy, :kerplode] { method2_namey_name(p1, p2) }
fuente
Puede pasar una lambda al
before_action
y pasarparams[:action]
alset_support
método de esta manera:class SupportsController < ApplicationController before_action only: [:show, :edit, :update, :destroy] {|c| c.set_support params[:action]} ....
A continuación, se envía el parámetro es una de las cadenas:
'show'
,'edit'
,'update'
o'destroy'
.fuente
El controlador de soportes
class SupportsController < ApplicationController before_action only: [:show, :edit, :update, :destroy] { |ctrl| ctrl.set_support("the_value") } ...
El ApplicationController
class ApplicationController < ActionController def set_support (value = "") p value end ...
fuente