1

私の問題は accept_nested_attributes に関連しています。モデル名StudentProfileがあり、次のコードが含まれています。

class StudentProfile < ActiveRecord::Base
   attr_accessible :projects_attributes
   has_many :projects ,:inverse_of => :student_profile,:dependent => :destroy
   accepts_nested_attributes_for :projects, :allow_destroy => true, :reject_if => lambda { |a| a[:name].blank? }
end

私の別のモデルには、次のコードが含まれています。

class Project < ActiveRecord::Base
   belongs_to :student_profile
end

および My view ファイルには、次のコードが含まれています。

<%= f.fields_for :projects do |builder| %>
   <%= render "projects_fields", :f => builder %>
<% end %>
<%= link_to_add_fields "Add Project", f, :projects %> 

問題は、学生のプロファイルを保存するたびに、実際にプロジェクトの記録も保存できることですが、学生のプロファイルを更新してプロジェクトの 1 つを削除しようとするたびに、更新時にプロジェクトが実際に破棄されるわけではありませんがparams、次のものが含まれます。コンテンツ:

"projects_attributes"=>{"0"=>{"name"=>"test", "_destroy"=>"1", "id"=>"2"}}

私が間違ったことを明確にしてください。

4

1 に答える 1

1

これは大量の属性保護である可能性があります。StudentProfile に次を追加します。

class StudentProfile < ActiveRecord::Base
  attr_accessible :projects_attributes

  has_many :projects ,:inverse_of => :student_profile,:dependent => :destroy
  accepts_nested_attributes_for :projects, :allow_destroy => true, :reject_if => lambda { |a| a[:name].blank? }
end
于 2013-03-04T10:19:11.577 に答える