доступ к хешу через переменную в ruby ​​на рельсах - PullRequest
0 голосов
/ 16 августа 2010

Здравствуйте, у меня следующая проблема.

У меня есть хеш, заполненный параметрами html (params):

Parameters:  "info"=>{"parameter2"=>{"r1"=>"aa", "r2"=>"bb", "r3"=>"cc", "r4"=>"dd", "r5"=>"ee"}

Вы можете получить доступ к этим значениям следующим образом:

<%= params[:info][:parameter2][:r1] %> -> отлично работает

Но у меня есть цикл, и я хочу получить доступ к этим значениям через такую ​​переменную:

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

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

<% end %>

-> это не работает. Я всегда получаю эту ошибку:

не может преобразовать ноль в строку

Но "r1" существует. Почему всегда говорится, что он не может преобразовать ноль в строку.

Как я могу получить доступ к этим параметрам с изменяющейся переменной ??

Мне нужно что-то вроде этого: params [: info] [: parameter2] [@ var]

Ответы [ 4 ]

6 голосов
/ 16 августа 2010

В Ruby вещи с двоеточием перед ним являются символом .Полученная ошибка является правильной, поскольку вы ссылаетесь на «r1» вместо: r1.

Вам необходимо использовать to_sym, чтобы сделать символ из строки.

n = "r" + number_row.to_s
params[:info][:parameter2][n.to_sym]
2 голосов
/ 16 августа 2010

Звучит очень не рубиново.Попробуйте

params[:info][:parameter2].each do |key, value|

...

0 голосов
/ 16 августа 2010

Это работает для меня:

1.upto(@numb_rows).each do |i|
  puts params['info']['parameter2']["r#{i}"]}
end
0 голосов
/ 16 августа 2010

Попробуйте вот так!

<% params[:info][:parameter2].keys do |key| %>

<%= params[:info][:parameter2][key] %>

<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...