有没有办法在Rails控制器中保留(保留)参数?它应该传递给每个动作,然后传递给每个视图和每个链接.
示例情况:
我有实体A及其控制器.此外,我有另一个依赖于A的实体B.我需要经常访问“父”A实体,所以我想让它仍然像
HTTP:// SOME_URL / b_controller / b_action a_entity = XYZ
解决方法
您应该可以使用before_filter和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
这并没有解决设置@a_entity初始值的问题,但这可以从任何地方(视图,控制器等)完成.
如果您希望在多个控制器中传递此参数,则可以替换MyController< ApplicationController与ApplicationController< ActionController :: Base,它应该也可以工作. 希望这可以帮助.