嵌套属性未正确显示表单

时间:2013-06-09 19:41:58

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 nested-attributes

我有一个来自用户的表单

<%= form_for(@user) do |f| %>
  <%= f.fields_for :businesses do |field| %>
    <div class="field">
      <%= field.label :address %>
      <%= field.text_field :address %>
    </div>   
    <div class="field">
      <%= field.label :city %>
      <%= field.text_field :city %>
    </div>  
  <% end %>
<% end %>

它不会显示我的字段,但是当我将businesses更改为business时,它会显示,或者我从f删除f.fields_for。但我认为它没有正确保存到数据库中。

我的用户模型

class User < ActiveRecord::Base
  has_many :businesses
  accepts_nested_attributes_for :businesses
en

我的商业模式

class Business < ActiveRecord::Base
  attr_accessible :user_id, :address, :city
  belongs_to :user
end

我的商务迁移

class CreateBusinesses < ActiveRecord::Migration
  def change
    create_table :businesses do |t|
      t.integer :user_id
      t.string :address
      t.string :city

      t.timestamps
    end
  end
end

关于我做错了什么建议?

由于

1 个答案:

答案 0 :(得分:4)

您应该先建立一个企业,然后才能为其展示表单:

@user.businesses.build

在使用fields_for

之前使用它

另外,请查看这个用于管理嵌套表单的优秀gem:

https://github.com/ryanb/nested_form