解决方法
如果要在同一个控制器实例的方法之间共享值,那么,
声明一个实例变量:
声明一个实例变量:
class BarsController < UsersController before_filter :init_foo_list def method1 render :method2 end def method2 @foo_list.each do | item| # do something end end def init_foo_list @foo_list ||= ['Money','Animals','Ummagumma'] end end
如果要在会话中跨两个控制器共享值,则:
class BarsController < UsersController before_filter :init_foo_list def method1 render :controller => "FoosController",:action => "method2" end def init_foo_list params[:shared_param__] ||= ['Money','Ummagumma'] end end class FoosController < UsersController def method2 params[:shared_param__].each do | item| # do something end end end
为共享参数键指定唯一名称,以避免与现有键冲突.
其他选项是将共享数组存储在会话广告中,在最终渲染之前将其删除.