0

私は3つのモデルを持っています。親、子、タイプ、および関係。リレーションシップは、親、子、およびタイプを参照するリッチ結合モデルです。

問題は、子が作成され、リレーションシップ テーブルが作成されている間、リレーションシップ テーブルの parent_id が入力されないことです。子とタイプのみが自動的に入力されます。

親.rb

attr_acccessible :relationships_attributes

has_many :relationships
has_many :children, :through => :relationships
has_many :types, :through => :relationships

child.rb

attr_acccessible :relationships_attributes

has_many :relationships
has_many :parents, :through => :relationships
has_many :types, :through => :relationships

accepts_nested_attributes_for :relationships

関係.rb

attr_accessible :parent_id, :child_id, :type_id
belongs_to :parent
belongs_to :child
belongs_to :type

children.controller

def new
 @child = Child.new
 @child.relationships.build
end

def create
 @child = Child.new(params[:child])
 if @child.save
  redirect_to current_user
 else
  render "new"
 end
end

new.html.erb

<%= simple_form_for @child do |f| %>
  <%= f.input :first_name, :label => 'First Name' %>
  <%= f.input :gender, :as => :select, :collection => ['Male', 'Female'] %>
  <%= f.association :relation_types, :as => :collection_select %>


  <%= f.button :submit, :class => "primary" %>

<% end %>

助けてください。

ありがとうございました!

4

1 に答える 1

2

あなたは多くのことを忘れているようです:

@child.relationships.build 

そのはず

@child.relationships.build :parent_id => ...

代わりにビューで

f.association :relation_types, :as => :collection_select

使用する

f.field_for :relationships do |g|
  g.association :types, :as => :collection_select
  g.hidden :parent_id #need to save this
于 2012-10-16T10:09:11.843 に答える