嵌套表单中的选项

时间:2011-02-06 19:13:19

标签: ruby-on-rails-3 nested-forms

尝试制作一个嵌套的表单,到目前为止工作正常,除了我需要为用户选择一些下拉菜单,以及可能进行一些验证,但是它似乎没有任何正确的表格无论我尝试什么,都会不断出错。

三种型号。 --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;
  &lt;%= f.submit%&gt; &lt;%end%&gt;

1 个答案:

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