Генерация имени атрибута в цикле, вложенная форма - PullRequest
0 голосов
/ 18 апреля 2011

Я использую следующий код для генерации набора полей в форме рельсов (3.06):

<% (1..5).each do |index| %>  
  <%= f.text_field "s"+index.to_s + "_incidence", :placeholder => "incidence", :value => number_to_percentage("s"+index.to_s + "_incidence", :precision => 0  ) %>                                                       
<% end %>

Цикл создает поля - s0_incidence, s1_incidence, s2_incidence и т. Д. В зависимости от количества запросов в проекте. Поэтому вместо того, чтобы повторять каждую строку 10 раз, я использую цикл для создания полей.

Форма отправляется правильно, однако для существующих записей я бы хотел заполнить значение: value с помощью формулы number_to_percentage. number_to_percentage отказывается распознавать имя атрибута, поэтому содержимое ячейки выглядит как "s0_incidence" вместо ##%.

Что я делаю не так? Нужно ли преобразовывать * "s" + index.to_s + "_incidence" * в символ, чтобы он распознавался как: s0_incidence?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

number_to_percentage хочет номер. Он ничего не знает о вашей форме или модели, поэтому не может принимать имя параметра.

Если я правильно понимаю модель ваших запросов, думаю, вам нужно сделать

<% @project.requests.each_with_index do |request, index| %>
  <%= f.text_field "s#{index}_incidence", :placeholder => "incidence", :value => number_to_percentage(request.incidence, :precision => 0) %>
<% end %>
0 голосов
/ 19 апреля 2011

Разобрался:

<% (1..5).each do |index| %>  
  <%= f.text_field "s"+index.to_s + "_incidence", :value => number_to_percentage(f.object["s"+index.to_s + "_incidence"], :precision => 0), :placeholder => "incidence" %>                                                       
<% end %>
...