【发布时间】:2014-04-29 17:55:22
【问题描述】:
我有一个包含 2 个专业人士嵌套表格的表格(证书和培训)。每一个在 Professional 模型中都有关联 accept_nested_attributes_for。我可以通过他的证书和培训创建一个新的专业人士。但是,当我保存时,不会更新证书和培训,而是创建一个新的。
我的专业控制器:
def edit
@professional = Professional.find(params[:id])
@component = Component.all
cert = Certificate.where('professional_id = ?', params[:id])
cert.each do |certificate|
@certificate = certificate
end
tra = Training.where('professional_id = ?', params[:id])
tra.each do |training|
@training = training
end
@work = Work.all
@charge = Charge.all
@entities =Array.new
TypeEntity.where("id IN (1,5)").each do |tent|
@entities << tent.entities
end
@reg = Time.now.to_i.to_s
@major = Major.all
@action = 'edit'
render layout: false
end
def update
profesional = Professional.find(params[:id])
if profesional.update_attributes(professional_parameters)
flash[:notice] = "Se ha actualizado correctamente los datos."
redirect_to :action => :index
else
profesional.errors.messages.each do |attribute, error|
flash[:error] = flash[:error].to_s + error.to_s + " "
end
# Load new()
@profesional = profesional
render :edit, layout: false
end
end
private
def professional_parameters
params.require(:professional).permit(
:name,
:dni,
:professional_title_date,
{:major_ids => []},
:date_of_tuition,
:code_tuition,
:professional_title,
:tuition,
:cv,
certificates_attributes: [
:id,
:professional_id,
:work_id,
:charge_id,
:entity_id,
:num_days,
:start_date,
:finish_date,
{:component_work_ids => []},
:certificate,
:other,
:_destroy
],
trainings_attributes: [
:id,
:professional_id,
:type_training,
:name_training,
:num_hours,
:start_training,
:finish_training,
:training,
:_destroy
]
)
end
这是模型:
class Certificate < ActiveRecord::Base
has_one :charge
belongs_to :professional
end
class Professional < ActiveRecord::Base
has_and_belongs_to_many :majors
has_many :certificates
has_many :trainings
accepts_nested_attributes_for :certificates, :allow_destroy => true
accepts_nested_attributes_for :trainings, :allow_destroy => true
end
class Training < ActiveRecord::Base
belongs_to :professional
end
表格以此开头:
=simple_form_for([:biddings, @professional], html: { multipart: true }) do |f|
之后,我在引导向导中有 3 个表单。
【问题讨论】:
-
您的
Professional模特在哪里?请粘贴它 -
请分享问题中的编辑视图代码。
-
您能否分享整个编辑视图的代码以及嵌套表单的详细信息(如果它们在单独的部分中)。如果您认为您的问题变得冗长,那么您可能需要在 Github Gist 中添加代码。
-
你发现了吗?我有完全相同的问题,它让我发疯。表单提交后,它返回验证错误,并在我每次执行时创建一组重复的子记录。
-
我有同样的问题,有什么解决办法吗?
标签: ruby-on-rails updates nested-forms