加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 04:32:26 所属栏目:百科 来源:网络整理
导读:有没有办法在控制器方法之间共享数组并存储它直到页面重新加载或调用另一个控制器的方法?有些方法应该更改数组. 解决方法 如果要在同一个控制器实例的方法之间共享值,那么, 声明一个实例变量: class BarsController UsersController before_filter :init_f
有没有办法在控制器方法之间共享数组并存储它直到页面重新加载或调用另一个控制器的方法?有些方法应该更改数组.

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读