2011-02-06 99 views
0

试图制作一个嵌套的形式,目前工作正常,除了我需要为用户选择一些下拉菜单,以及可能做一些验证,但它似乎没有得到的形式正确,不断收到错误,不管我尝试什么。嵌套形式的选项

三种型号。 --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') 

现在,到目前为止我创建一个嵌套形式,通过configoptions循环,但对于每一个选项可能有多个项目。所以我想在这种情况下为这些选项做一个下拉菜单。

在我看来,我有:

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

我得到一个错误显然告诉我,它不能算:项目。

您认为我可以做这项工作吗?

谢谢!

<%= form_for @config,:url => {:action =>'show',:id => @ config.id} do | f | %> <%= f.fields_for:configoptions do | fp | %>

<%= fp.text_field:ID%> <%= fp.text_field:名称%> <%= fp.text_field:量%>

<%端%>
<%= f.submit%> <%end%>

回答

0

好的,我想我已经知道了,至少现在看来我正在做我想做的事。

我修改了视图以将config选项的实例传递到嵌套窗体本身,以便能够创建下拉列表。

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