gpt4 book ai didi

ruby-on-rails - 在 Rails HABTM 嵌套表单中创建新记录

转载 作者:行者123 更新时间:2023-12-04 21:20:44 25 4
gpt4 key购买 nike

我有一个使用 has_and_belongs_to_many 到 has_and_belongs_to_many 设置的嵌套表单(使用 Ryan B 的nested_form gem):
Opening has_and_belongs_to_many :contactsContact has_and_belongs_to_many :openings
在尝试向空缺添加新联系人时,在这种情况下,我得到:
Can't mass-assign protected attributes: new_1346666966632
为了
"opening"=>{"contacts_attributes"=>{"new_1346666966632"=>{"contacts"=>{"name"=>"Test Contact",
我已经添加了相应的“accepts_nested_attributes_for”和“attr_accessible”,并在 Controller 中构建了联系人,即@opening.contacts.build 和@opening.contacts.build(params[:opening][:contact_attributes])。

我哪里错了?在这里使用 has_many through 关系会更好吗?

编辑:

看法:

<%= simple_nested_form_for @opening, :wrapper => :plain do |f| %>
<%= f.link_to_add "Add a contact", :contacts %>
<%= f.button :submit %>
<% end %>

它使用部分来为嵌套联系人生成字段:
<%= f.fields_for :contacts, @opening.contacts.build do |contact_form| %>
<%= contact_form.input :name, :label => false, :input_html => { :class => 'span6' } %>
<%= contact_form.input :company, :label => false, :input_html => { :class => 'span6' } %>
<%= contact_form.input :telephone, :label => false, :input_html => { :class => 'span6' } %>
<%= contact_form.input :email_address, :label => false, :input_html => { :class => 'spa12' } %>
<% end %>

最佳答案

您需要从开放模型构建/创建联系人,而不是尝试手动分配contacts_attributes。您的 Controller 代码需要类似于:

@opening.update_attributes(params[:opening])

查看 Rails guide for more info on using nested attributes

关于ruby-on-rails - 在 Rails HABTM 嵌套表单中创建新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12245890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com