您好我有以下问题。
我有一个填充html参数(params)的哈希:
Parameters: "info"=>{"parameter2"=>{"r1"=>"aa", "r2"=>"bb", "r3"=>"cc", "r4"=>"dd", "r5"=>"ee"}
您可以像这样访问此值:
<%= params[:info][:parameter2][:r1] %>
- &gt;它工作正常
但我有一个循环,并希望通过类似的变量访问这些值:
<% for number_row in (1..@numb_rows) %>
<%= params[:info][:parameter2]["r" + number_row.to_s] %>
<% end %>
- &GT;它不起作用。 我总是得到这个错误:
无法将nil转换为String
但“r1”确实存在。为什么它总是说,它不能将nil转换为String。
如何通过更改变量来访问这些参数?
我需要这样的东西:params [:info] [:parameter2] [@ var]
答案 0 :(得分:6)
在Ruby中,前面有冒号的东西是Symbol。您得到的错误是正确的,因为您引用的是“r1”,而不是:r1。
n = "r" + number_row.to_s
params[:info][:parameter2][n.to_sym]
答案 1 :(得分:2)
听起来非常红宝石。尝试
params[:info][:parameter2].each do |key, value|
...
答案 2 :(得分:0)
试试这种方式!
<% params[:info][:parameter2].keys do |key| %>
<%= params[:info][:parameter2][key] %>
<% end %>
答案 3 :(得分:0)
这对我有用:
1.upto(@numb_rows).each do |i|
puts params['info']['parameter2']["r#{i}"]}
end