Ruby on rails:嵌套属性表单不显示

时间:2011-12-20 08:05:16

标签: ruby ruby-on-rails-3.1

我正在研究Rails 3.1.1.rc3,我有2个类,如下所示。

class Customer < ActiveRecord::Base
  has_many :orders, :dependent => :destroy
  accepts_nested_attributes_for :orders
end

class Order < ActiveRecord::Base
  belongs_to :customer
end

以我的形式:

<%= form_for(@customer) do |f| %>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name,:class=>'textbox' %>
  </div>

  <%= f.fields_for :orders do |order_form| %>   
    <div class="field">
       <%= order_form.label :number %><br />
       <%= order_form.text_field :number, :class=>'textbox' %>
   </div>  
  <%end%>

<%end%>

当它呈现时,表单的第一部分(对于客户)显示,但第二部分(对于订单)不显示。任何指针都表示赞赏。感谢。

2 个答案:

答案 0 :(得分:4)

两件事。第一个fields_for基本上遍历customer.orders,所以如果没有订单,你将得不到输出。如果您只想要一些空白字段供用户输入订单详细信息,您通常会坚持

@customer.orders.build

在你的控制器中。其次,fields_forform_for非常相似,您需要使用&lt;%=也是如此

答案 1 :(得分:1)

添加

<%= f.fields_for :orders do |order_form| %> 

而不是

<% f.fields_for :orders do |order_form| %> 

编辑:看看how fields_for is defined(有例子)