我有以下模特
我在模型中有以下关系。
地址模型
class Address < ApplicationRecord
belongs_to :car
belongs_to :user
end
汽车模型
class Car < ApplicationRecord
has_one :address
accepts_nested_attributes_for :address
end
用户模型
class User < ApplicationRecord
has_one :address
accepts_nested_attributes_for :address
end
数据库表
迁移 用户
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.string :username
...
t.references :Address, foreign_key: true
end
end
end
汽车迁移
class CreateCars < ActiveRecord::Migration[5.0]
def change
create_table :cars do |t|
t.string :chasis
...
t.references :Address, foreign_key: true
end
end
end
现在,当我尝试从User / new.html.erb创建嵌套表单时,我收到以下错误。
user_id是地址中的未知属性。
User_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
@user.build_address
end
...
end
我的嵌套表单未呈现。
嵌套表格
<%= form_for @user, html: { class: 'form-horizontal' } do |f|%>
<%= f.fields_for :address do |fact| %>
<div class="field form-group">
<%= f.label :add1, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.text_field :add1, class: 'form-control' %>
</div>
</div>
<div class="field form-group">
<%= f.label :add2, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.text_field :add2, class: 'form-control' %>
</div>
</div>
<% end %>
<div class="field form-group">
<div class="col-sm-offset-2 col-sm-2">
<%= f.submit class: 'form-control btn btn-primary' %>
</div>
</div>
<% end %>
我怀疑我的迁移文件存在一些问题。但数据库表是以我想要的方式创建的。
答案 0 :(得分:0)
不太确定但是:
t.references :Address, foreign_key: true
不应该
t.references :address, foreign_key: true
注意:address
答案 1 :(得分:0)
用户ID不存在。
首先您必须保存用户。你可以试试fact.addr而不是f.addr
您可以发布用户控制器文件的完整代码。
<%= form_for @person, url: {action: "create"} do |person_form| %>
<%= person_form.text_field :name %>
<%= fields_for @person.contact_detail do |contact_detail_form| %>
<%= contact_detail_form.text_field :phone_number %>
<% end %>
<% end %>
<form accept-charset="UTF-8" action="/people" class="new_person" id="new_person" method="post">
<input id="person_name" name="person[name]" type="text" />
<input id="contact_detail_phone_number" name="contact_detail[phone_number]" type="text" />
</form>
如果保存@person,它也会自动保存联系人数据。
请参阅此链接以获取更多信息