嵌套属性无法正确显示表单

hel*_*llo 3 ruby-on-rails nested-attributes ruby-on-rails-3 ruby-on-rails-3.2

我有用户的表格

<%= 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 %>
Run Code Online (Sandbox Code Playgroud)

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

我的用户模型

class User < ActiveRecord::Base
  has_many :businesses
  accepts_nested_attributes_for :businesses
en
Run Code Online (Sandbox Code Playgroud)

我的商业模式

class Business < ActiveRecord::Base
  attr_accessible :user_id, :address, :city
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

我的商业移民

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
Run Code Online (Sandbox Code Playgroud)

关于我做错了什么有什么建议吗?

谢谢

Tim*_*aas 7

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

@user.businesses.build
Run Code Online (Sandbox Code Playgroud)

使用之前先使用它fields_for

另请查看这个用于管理嵌套表单的伟大宝石:

https://github.com/ryanb/nested_form

  • 找到它:在“has_one”关系中,它是“@user.build_preferences”。由于这篇文章找到了它:http://stackoverflow.com/questions/2472982/using-build-with-a-has-one-association-in-rails (2认同)