在Rails 3中将会话var初始化为数组

时间:2011-04-12 01:48:34

标签: ruby-on-rails ruby-on-rails-3

我需要将会话var初始化为数组。 我这样做的地方?

当我尝试这样做时:

session[:complains_id] << params[:id]

我收到此消息

  

当你没想到它时,你有一个零对象!   您可能期望一个Array实例。   在评估nil时发生错误。&lt;&lt;

我知道我必须初始化var,但我不知道在哪里。

谢谢!

1 个答案:

答案 0 :(得分:16)

只是做:

  (session[:complains_id] ||= []) << params[:id]

这是说:

  1. 如果session[:complains_id]返回 零,将其设置为[]。

  2. 追加 params[:id]session[:complains_id]

  3. 演示:

    ruby-1.9.2-p136 :007 > (session[:complains_id] ||= []) << 5
     => [5] 
    ruby-1.9.2-p136 :008 > (session[:complains_id] ||= []) << 3
     => [5, 3] 
    ruby-1.9.2-p136 :009 > (session[:complains_id] ||= []) << 1
     => [5, 3, 1]