ruby-on-rails – 如何在控制器方法之间传递值

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何在控制器方法之间传递值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法在控制器方法之间共享数组并存储它直到页面重新加载或调用另一个控制器的方法?有些方法应该更改数组.

解决方法

如果要在同一个控制器实例的方法之间共享值,那么,
声明一个实例变量:
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

为共享参数键指定唯一名称,以避免与现有键冲突.

其他选项是将共享数组存储在会话广告中,在最终渲染之前将其删除.

猜你在找的Ruby相关文章