Циклы со встроенным Ruby и simple_form
Я пытаюсь перебрать массив значений с помощью simple_form.
Где @resume.employerorg содержит следующие значения:
["Больница кайзера Санта-Клара", "Больница кайзера", "Медицинский центр UC", "Медицинский центр UCD", "Некоторая больница", "Больница Саттер Оберн Фэйт", "Больница кайзера Розвилла", "Больница Саттера Розвилля"]
На мой взгляд, у меня есть следующее
<h3>7. Employer Names</h3>
<%= simple_form_for @resume do |f| %>
<% @resume.employerorg.each do |i| %>
<%= f.input :employerorg, label: 'First Employer' %>
<%= f.button :submit %>
<% end %>
<br/>
<% end %>
Но это создает 8 полей ввода, каждое из которых заполнено
Больница Kaiser Santa Clara Больница Kaiser UC Медицинский центр UCD Медицинский центр Некоторые больницы Саттер Оберн Фейт Больница Kaiser Roseville Больница Саттер Розвилл
Как мне заполнить каждый вход одним отдельным элементом из массива, а не заполнять каждый вход целым массивом 8 раз?
2 ответа
<h3>7. Employer Names</h3>
<%= simple_form_for @resume do |f| %>
<% @resume.employerorg.each do |i| %>
<%= f.input :employerorg, label: 'First Employer' %>
<%= f.button :submit %>
<% end %>
<br/>
<% end %>
Понимание того, что здесь происходит: каждый раз, когда вы говорите Ruby/Rails .each do
Коллекция объектов, вы указываете "указатель", если хотите, чтобы ссылаться на каждый объект внутри, в вашем случае, вы указали i
,
Если вы используете простой массив в качестве входных данных, вы можете просто использовать i
вывести значение.
Как упомянул Фредрико, вы также должны использовать индекс объекта для генерации вашего идентификатора.
<h3>7. Employer Names</h3>
<%= simple_form_for @resume do |f| %>
<% @resume.employerorg.each do |i, index| %>
<%= f.input "emp-#{index}".to_sym, label: "Employer: #{index}", input_html: {value: i} %>
<% end %>
<br/>
<% end %>
Вы должны использовать значение i
генерировать вход. Что-то вроде этого:
<h3>7. Employer Names</h3>
<%= simple_form_for @resume do |f| %>
<% @resume.employerorg.each_with_index do |i, index| %>
<% input_id = "employerorg_#{index}".to_sym %>
<%= f.input input_id, label: 'First Employer', input_html: {value: i} %>
<%= f.button :submit %>
<% end %>
<br/>
<% end %>
Вам нужно сгенерировать input_id
на основе пункта index
, В противном случае все входные данные будут иметь одинаковое имя и идентификатор и не будут различаться.