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