为什么我simple_fields_for不迭代
问题描述:
我有以下的(简化)类:为什么我simple_fields_for不迭代
class CandidateList < ActiveRecord::Base
has_many :candidates, inverse_of: :candidate_list, dependent: :destroy
...
end
和
class Candidate < ActiveRecord::Base
belongs_to :candidate_list, inverse_of: :candidates
...
end
在我的控制,我创建了一个CandidateList
10个Candidate
对象和查询数据库验证它们存在并被附着。
在我的形式,我有以下几点:
<%= simple_form_for save_bingo_terms_path(candidate_list_id: @candidate_list) do |f| %>
...
<%= @candidate_list.candidates.count %>
<table>
<%= f.simple_fields_for :candidates do |cf| %>
<tr>
<td><%= cf.input :name, label: false %></td>
<td><%= cf.input :definition, label: false %></td>
</tr>
<% end %>
<% end %>
谁能帮助我了解为什么它只能说明我在表中的一行与name
输入字段和definition
即使count
表格上方的输出显示10
?
在此先感谢!
答
:candidates
不与@candidate_list对象相关联的,它与一个save_bingo_terms_path
变化相关的simple_form_for
到
<%= simple_form_for @candidate_list do |f| %>
而且不要忘了指定...
class CandidateList < ActiveRecord::Base
has_many :candidates, inverse_of: :candidate_list, dependent: :destroy
accepts_nested_attributes_for :candidates
...
end
或者,您可以明确指定一个each
循环并引用每个候选人
<% @candidate_list.candidates each do |candidate| %>
<% f.simple_fields_for :candidates, candidate do |cf| %>
<tr>
<td><%= cf.input :name, label: false %></td>
<td><%= cf.input :definition, label: false %></td>
</tr>
<% end %>
<% end %>
我想就是这样。其中一天,我必须阅读更多关于FormBuilders的信息......现在,我认为我只是想将其作为一种资源。 –