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

mda*_*rre 3 ruby-on-rails ruby-on-rails-3

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

当我尝试这样做:

session[:complains_id] << params[:id]
Run Code Online (Sandbox Code Playgroud)

我收到这条消息

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

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

谢谢!

Mik*_*wis 16

做就是了:

  (session[:complains_id] ||= []) << params[:id]
Run Code Online (Sandbox Code Playgroud)

这是说:

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

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

演示:

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] 
Run Code Online (Sandbox Code Playgroud)