2011-02-06 97 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 %>