嵌入 Ruby 和 simple_form 的循环

Loops with embedded Ruby and simple_form

View Output

我正在尝试使用 simple_form.

遍历值数组

其中@resume.employerorg 包含以下值:

["Kaiser Santa Clara Hospital", "Kaiser Hospital", "UC Medical Center", "UCD Medical Center", "Some Hospital", "Sutter Auburn Faith Hospital", "Kaiser Roseville Hospital", "Sutter Roseville Hospital"]

在我看来我有以下几点

<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 Hospital Kaiser Hospital UC Medical Center UCD Medical Center Some Hospital Sutter Auburn Faith Hospital Kaiser Roseville Hospital Sutter Roseville Hospital

我如何用数组中的一项单独填充每个输入,而不是用整个数组填充每个输入 8 次?

您应该使用 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 %>

您需要根据项目 index 生成 input_id。否则,所有输入将具有相同的名称和 ID,并且无法区分。

<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 一个对象集合时,你指定一个 "pointer",如果你愿意的话,来引用其中的每个对象,在您的情况下,您指定了 i.

如果您使用简单的数组作为输入,您可以只使用 i 来输出值。

正如 Fredrico 提到的,您还应该利用对象的索引来生成您的 ID。

<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 %>