2011-09-12 56 views
0

工作时,我认为我尝试建立一个嵌套形式嵌套形式不是的has_many

<%= semantic_form_for @order do |f| %> 
    <%= f.inputs :name => "Detail", :for => :order_detail do |od| %> 
    <%= od.input :shoe_id, :collection => Shoe.all.map{|s|[s.article_number,s.id]} %> 
    <%= od.input :size_id, :collection => Size.all.map{|s|[s.number,s.id]} %> 
    <%= od.input :color_id, :collection => Color.all.map{|c|[c.name,c.id]} %> 
    <%= od.input :quantity %> 
    <%- end -%> 
<%- end -%> 

它的工作原理我已经有了一个模型订单

class Order < ActiveRecord::Base 
    has_many :order_details, :class_name => "OrderDetail" 
    accepts_nested_attributes_for :order_details 
end 

。但使用

:for => :order_details 

没有。它什么都不渲染。

==求助!

我找到了解决方案。

@ order.order_details是emtpy,因此不会呈现nested_form。

控制器书面方式:

@order.order_details.build 
+0

我不明白。当你这样做的时候,它的工作方式是正确的,当你这样做的时候是不正确的呢?对不起,我很困惑。 –

回答

0

我找到了解决办法。

@ order.order_details是emtpy,因此不会呈现nested_form。

书面方式控制器:

@order.order_details.build 
0

fields_for用来渲染嵌套属性,我认为以下应工作

<%= semantic_form_for @order do |f| %> 
    <%= f.fields_for :order_details do |od| %> 
    <%= od.input :shoe_id, :collection => Shoe.all.map{|s|[s.article_number,s.id]} %> 
    <%= od.input :size_id, :collection => Size.all.map{|s|[s.number,s.id]} %> 
    <%= od.input :color_id, :collection => Color.all.map{|c|[c.name,c.id]} %> 
    <%= od.input :quantity %> 
<%- end -%> 

<% - 完 - %>

,我们可以用fields_for helper创建多个嵌套记录 参见rails cast

http://railscasts.com/episodes/196-nested-model-form-part-1

http://railscasts.com/episodes/197-nested-model-form-part-2

0

我找到了解决办法。

@order.order_details is emtpy so no nested_form is rendered. 

书面方式控制器:

@order.order_details.build 

会让formtastic正确渲染