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

时间:2013-04-22 04:25:42

标签: ruby-on-rails model nested-forms

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

我的参数是:

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

2 个答案:

答案 0 :(得分:2)

您指定的reject_if表示当params没有内容时,它不应该保存子模型。因此,请确保您的params具有包含值的content属性。 Ur params应该看起来像这样:

{“utf8”=&gt;“✓”,“authenticity_token”=&gt;“5F8h7qG2pez9Rsutnq3JXYyXbPkbVJAlgfIfsE1bdUw =”,“申请人”=&gt; {“job_id”=&gt;“1”,“first_name”=&gt;“sanyam”,“location”=&gt;“”,“email”=&gt;“”,“mob_no”=&gt;“”,“alternative_no” “=&gt;”“,”last_name“=&gt;”jain“,”works_attributes“=&gt; {”1366604495995“=&gt; {“title”=&gt;“M Tech”,“company_name”=&gt;“”,“start_month”=&gt;“”,“start_year”=&gt;“”,“end_month”=&gt;“”,“end_year “=&gt;”“,”“description”=&gt;“”,“content”=&gt;“some content”,“_ destroy”=&gt;“false”},“1366604506595”=&gt; {“title”=&gt;“B Tech”,“company_name”=&gt;“”,“start_month”=&gt;“”,“start_year”=&gt;“”,“end_month”=&gt;“”,“end_year “=&gt;”“,”“description”=&gt;“”,“content”=&gt;“some content”,“_ destroy”=&gt;“false”}},“linkedin”=&gt;“”, “twitter”=&gt;“”,“facebook”=&gt;“”,“message”=&gt;“”},“提交”=&gt;“”}

答案 1 :(得分:1)

如果子表数据未获取保存,请记住两个attr_accessible

attr_accessible:first_name attr_accessible:works_attributes,:allow_destroy =&gt;真正 accepts_nested_attributes_for:工作

相关问题