通过rails上的ruby中的变量访问哈希

wab*_*iti 0 hash ruby-on-rails

您好我有以下问题.

我有一个填充html参数(params)的哈希:

Parameters:  "info"=>{"parameter2"=>{"r1"=>"aa", "r2"=>"bb", "r3"=>"cc", "r4"=>"dd", "r5"=>"ee"}
Run Code Online (Sandbox Code Playgroud)

您可以像这样访问此值:

<%= params[:info][:parameter2][:r1] %> - >工作正常

但我有一个循环,并希望通过这样的变量访问这些值:

<% for number_row in (1..@numb_rows) %>

<%= params[:info][:parameter2]["r" + number_row.to_s]  %>

<% end %>
Run Code Online (Sandbox Code Playgroud)

- >它不起作用.我总是得到这个错误:

无法将nil转换为String

但"r1"确实存在.为什么它总是说,它不能将nil转换为String.

如何通过变化变量来访问这些参数?

我需要这样的东西:params [:info] [:parameter2] [@ var]

Nat*_*hot 6

在Ruby中,前面有冒号的东西是符号.您得到的错误是正确的,因为您引用的是"r1",而不是:r1.

您需要使用从字符串to_sym创建符号.

n = "r" + number_row.to_s
params[:info][:parameter2][n.to_sym]
Run Code Online (Sandbox Code Playgroud)