ruby on rails - permit - Parámetro persistente en el controlador Rails
strong parameters nested attributes (2)
¿hay alguna forma de persistir (preservar) los parámetros en el controlador Rails? Se debe pasar a cada acción, luego a cada vista y cada enlace.
Situación de ejemplo: Tengo la entidad A con su controlador. Además, tengo otra entidad B que depende de A. Necesito acceder a la entidad "madre" A con mucha frecuencia, así que me gustaría tenerla todavía como
http://some_url/b_controller/b_action?a_entity=xyz
¿por qué no ponerlo en un parámetro de sesión, entonces?
session["a_entity"] = "xyz"
de esa manera puede acceder a él en todos sus otros controladores también hasta que lo borre o caduque.
más información aquí:
http://api.rubyonrails.org/classes/ActionController/Base.html
Debería poder hacer todo desde su controlador, usando una combinación de before_filter
y default_url_options
:
class MyController < ApplicationController
before_filter :set_a_entity
def set_a_entity
@a_entity = params[''a_entity'']
# or @a_entity = Entity.find(params[''a_entity''])
end
# Rails 3
def url_options
{:a_entity => @a_entity}.merge(super)
end
# Rails 2
def default_url_options
{:a_entity => @entity}
end
end
Esto no resuelve el problema de establecer el valor inicial de @a_entity
, pero esto se puede hacer desde cualquier lugar (vista, controlador, etc.).
Si desea que se pase este parámetro en varios controladores, puede reemplazar MyController < ApplicationController
con ApplicationController < ActionController::Base
y debería funcionar también.
Espero que esto ayude.