gpt4 book ai didi

ruby-on-rails - 如何使用子窗体保存父对象属性

转载 作者:行者123 更新时间:2023-12-03 20:45:16 25 4
gpt4 key购买 nike

这些是我的模型:

class Parent < ActiveRecord::Base
has_one :child, :dependent => :destroy
end

class Child < ActiveRecord::Base
belongs_to :parent
accepts_nested_attributes_for :parent
end

我的目标是在创建子项时更新 1 个父属性(电子邮件)(这意味着最终用户位于 Controller 操作为"new"的子窗体上)

Hay que tener en cuenta que simpre cuando quiera crear el child, existe ya antes de antes un parent en la db.

我的子 Controller :

def new
@child = Child.new
@child.parent = current_parent
end


def create
@child = Child.new(params[:child])
@child.parent = current_parent


respond_to do |format|
if @child.save
#.....
else
format.html { render :action => "new" }
end
end
end

子窗体:

<% form_for @child, :html => {:multipart => true} do |f| %>
......
<% f.fields_for :parent do |p| %>
<%= p.label :email, t(:label_child_email), :req => true %>
<%= p.text_field :email, :class => "field" %>
<% end %>

<%end%>

当用户点击保存按钮时,他们得到:

找不到 ID 为 4147 的 Child 的 Parent 和 ID

和参数:

{"commit"=>"Save",
"child"=>{
...........
"parent_attributes"=>{"email"=>"blabla@dada.com", "id"=>"4147"
},
..........
}

你知道这是怎么回事吗?

谢谢!

最佳答案

您构建 child 的方式导致了问题。尝试以下操作

def new
@child = current_parent.build_child
end

def create
@child = current_parent.build_child(params[:child])
// more code
end

查看 build_association 和 create_association here

关于ruby-on-rails - 如何使用子窗体保存父对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17871840/

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