PHP允许像这样向数组添加值:
array[]='a' # result: arr[0]='a'
array[]='a' # result: arr[1]='a'
...
如何用Ruby实现类似的结果?
更新: 忘了说,我需要在里面做一些额外的哈希,比如
'a'=>{1=>1}...
更新2:
第一次更新可能有点令人困惑,所以有我的完整资源,它不起作用。它必须在会话[:items] [0],会话[:items] [1] ......中创建@value
哈希的多个记录...
@value = {'id'=>id, 'quantity'=>1, "property_categories"=>params[:property_categories]}
if !session[:items].present?
session[:items] = @value
else
session[:items].push(@value)
end
更新3: 数据应如下所示:
[0=>{'id'=>id, 'quantity'=>1, "property_categories"=>{1=>1}},
1=>{'id'=>id, 'quantity'=>1, "property_categories"=>{1=>1}}]...
答案 0 :(得分:3)
答案 1 :(得分:2)
只需使用<<
array = []
array << 'a' # array == ["a"]
array << 'a' # array == ["a", "a"]
答案 2 :(得分:2)
在您的代码中,如果session[:items]
不存在,您将为其分配@value
(Hash
)。所以下次它会尝试将项目推送到哈希。
如果Array
需要session[:items]
,则应该可以使用
if !session[:items].present?
session[:items] = [@value] # Here create an array with @value in it
else
session[:items].push(@value)
end
修改强> 我看到你已经更新了你的问题。所以这是我更新的答案
if !session[:items].present?
session[:items] = { 0 => @value }
else
session[:items][ session[:items].keys.max + 1 ] = @value
end