好的,所以我已经花了6个多小时了,并仔细检查了这个问题的每一个变化,但我没有做任何工作!
我正在为朋友构建一个相当简单的家谱应用程序。有两个问题模型,即人和关系。每当您构建一个新的Person(在第一个单独处理的人之后)时,它也应该构建一个Relationship,它本质上是一个具有person_1属性,person_2属性和诸如“母亲”之类的Relationship_type属性的联接表。
当我建立一个新的人时,那个人会很好地保存到数据库中,但是关联的关系就不行了。我可以看到所有必需的参数都已传入,并且我已经阅读了尽可能多的关于嵌套参数的信息,但没有骰子。
我的代码很旧,我是一个初学者,所以请忽略任何无关的代码怪异之处。
我的人模型(围绕out_relationships资源)
class Person < ApplicationRecord
has_many :out_relationships, :class_name => "Relationship", :foreign_key => "person_1_id"
has_many :in_relationships, :class_name => "Relationship", :foreign_key => "person_2_id"
belongs_to :user, optional: true
accepts_nested_attributes_for :out_relationships
结束
我的关系模型:
class Relationship < ApplicationRecord
belongs_to :person_1, :class_name => "Person"
belongs_to :person_2, :class_name => "Person"
end
我的表单:
<%= form_for @person, :url => create_relative_path, html:{method:'post'} do |form| %>
<%= fields_for :out_relationships do |builder| %>
<div class="form-group">
<%= builder.label :relationship_type, "Relationship to #{@root_person.first_name}" %>
<%= builder.text_field :relationship_type, class: "form-control" %>
<%= builder.hidden_field :person_1, value: @person_1.id %>
<%= builder.hidden_field :person_2, value: @person_1.id %>
</div>
<% end %>
作为测试,我将person_1和person_2设置为相同的值。我认为,这与问题无关,也不应该影响正在发生的事情。反正...
我的控制器:
def new
@root_person = Person.find(params[:id])
@person = Person.new
@user = current_user
@root_person.out_relationships.build
end
# GET /people/1/edit
def edit
end
def create
@root_person = Person.find(params[:id])
@person = Person.new(person_params)
@user = current_user
respond_to do |format|
if @person.save
format.html { redirect_to @person, notice: 'Person was successfully created.' }
format.json { render :show, status: :created, location: @person }
else
format.html { render :new }
format.json { render json: @person.errors, status: :unprocessable_entity }
end
end
end
def person_params
params.require(:person).permit(:first_name, :middle_name, :last_name, :birth_date, :birth_city,
:birth_country, :current_city, :current_country, :profession, :maiden_name, :marital_status, :patel_type,
out_relationships_attributes: [:person_1, :person_2, :relationship_type])
end
无论如何,这要比我想像的还糟,多亏了仍在读书的人,还是会喜欢朝着正确的方向前进!