尝试制作一个嵌套的表单,到目前为止工作正常,除了我需要为用户选择一些下拉菜单,以及可能进行一些验证,但是它似乎没有任何正确的表格无论我尝试什么,都会不断出错。
三种型号。 --configuration has_many :configoptions
accepts_nested_attributes_for :configoptions
- configoption
belongs_to :configuration
has_many :items
和项目
belongs_to :configoption
scope :sorted, order('items.position ASC')
现在,到目前为止,我正在创建一个嵌套表单,循环遍历配置选项,但是对于每个选项都可能有多个项目。所以我想在这种情况下为这些选项做一个下拉。
在我看来,我有:
<p>
<th>Elements</th>
<th>Quantity</th>
</p>
<%= form_for @config, :url => {:action => 'show', :id => @config.id} do |f| %>
<%= f.fields_for :configoptions do |fp| %>
<p>
<% if :items.count > 1 %>
<%= fp.text_field :name %>
<% else %>
<% fp.select(:items, :name)%>
<% end %>
<%= fp.text_field :quantity %>
</p>
<% end %>
<%= f.submit %>
<% end %>
我收到一个错误,明显告诉我它无法计算:项目。
您认为我怎么能做到这一点?
谢谢!
&lt;%= form_for @config,:url =&gt; {:action =&gt; 'show',:id =&gt; @ config.id}做| f | %GT; &lt;%= f.fields_for:configoptions do | fp | %GT;
&lt;%= fp.text_field:id%&gt; &lt;%= fp.text_field:name%&gt; &lt;%= fp.text_field:quantity%&gt;
&lt;%end%&gt;
答案 0 :(得分:0)
我修改了视图,将configoption的实例传递给嵌套表单本身,以便能够创建下拉列表。
<% for configoption in @config.configoptions %>
<%= f.fields_for :configoptions, configoption do |fp| %>
<p>
<% if configoption.items.count > 1 %>
<%= fp.select (:name, options_from_collection_for_select(configoption.items.sorted, 'name', 'name'))%>
<% else %>