不保存嵌套表单模型数据轨?

问题描述:

当我保存申请人模型时,它不会将嵌套模型数据保存到数据库中。请帮我解决他的问题。我已经贴我的控制器代码,型号代码&传递参数不保存嵌套表单模型数据轨?

我的参数是:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"5F8h7qG2pez9Rsutnq3JXYyXbPkbVJAlgfIfsE1bdUw=", "applicant"=> 
{"job_id"=>"1", "first_name"=>"sanyam", "location"=>"", "email"=>"", "mob_no"=>"", "alternative_no"=>"", "last_name"=>"jain", "works_attributes"=>{"1366604495995"=> 
{"title"=>"M Tech", "company_name"=>"", "start_month"=>"", "start_year"=>"", "end_month"=>"", "end_year"=>"", "description"=>"", "_destroy"=>"false"}, "1366604506595"=> 
{"title"=>"B Tech", "company_name"=>"", "start_month"=>"", "start_year"=>"", "end_month"=>"", "end_year"=>"", "description"=>"", "_destroy"=>"false"}}, "linkedin"=>"", 
"twitter"=>"", "facebook"=>"", "message"=>""}, "submit"=>""} 

我的控制器代码是:

def createProfile 
@applicant = Applicant.new(params[:applicant]) 
@applicant.save 
end 

我的申请人模型

class Applicant < ActiveRecord::Base 
attr_accessible :first_name, :last_name, :location, :email, :mob_no, :alternative_no, :linkedin, :facebook, :twitter, :message, :resume, :job_id 
has_many :works, :dependent => :destroy 
has_many :educations, :dependent => :destroy 
attr_accessible :works_attributes, :educations_attributes 
accepts_nested_attributes_for :works, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true 

accepts_nested_attributes_for :educations, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true 
end 

我的工作模式是

class Work < ActiveRecord::Base 
attr_accessible :applicant_id, :company_name, :description, :end_month, :end_year, :start_month, :start_year, :title 
belongs_to :applicant 
validates_associated :applicant 
end 
+0

在控制器用户“保存!”而不是“救”与后募集错误 – 2013-04-22 04:39:31

+0

还需要添加在申请人模型attr_accessable:works_attributes,:educations_Attributes – 2013-04-22 04:41:56

+0

都尝试这一点,它不工作 – 2013-04-22 04:56:17

您指定的reject_if指出,如果params中没有内容:它不应该保存子模型。所以确保你的参数具有内容属性和值。乌尔PARAMS应该看起来有点像这样:

{ “UTF8”=> “✓”, “authenticity_token”=> “5F8h7qG2pez9Rsutnq3JXYyXbPkbVJAlgfIfsE1bdUw =”, “申请人”=> { “作业ID”=> “1”,“ first_name“=>”sanyam“,”location“=>”“,”email“=>”“,”mob_no“=>”“,”alternative_no“=>”“,”last_name“=>”jain“ work_attributes“=> {”1366604495995“=> {”title“=>”M Tech“,”company_name“=>”“,”start_month“=>”“,”start_year“=>”“,”end_month“= >“”,“end_year”=>“”,“description”=>“”,“content”=>“some content”,“_destroy”=>“false”},“1366604506595”=> {“title” =>“B Tech”,“company_name”=>“”,“start_month”=>“”,“start_year”=>“”,“end_month”=>“”,“end_year”=>“”,“ =>“”,“content”=>“一些内容”,“_destroy”=>“false”}},“linkedin”=>“”, “twitter”=>“”,“facebook”=>“” ,“message”=>“”},“submi T “=>”“}

+0

非常感谢。你的解决方案解决了我的问题:) – 2013-04-22 12:53:50

+0

它帮助我很多。真的非常感谢。 但我想知道为什么它需要有一个名为内容的字段呢? – 2013-04-22 16:31:35

+0

reject_if表示如果您给出的条件评估为false,则应拒绝保存。由于您的条件检查{| a |一[:内容] .blank? },你需要:content params。 – deepthi 2013-04-23 04:09:17

记住两个attr_accessible如果子表数据不流汗保存

attr_accessible:FIRST_NAME attr_accessible:works_attributes,:allow_destroy =>真 accepts_nested_attributes_for:工作