gpt4 book ai didi

ruby-on-rails-4 - Rails 4 - 使用嵌套属性保存对象

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

我有一个父模型,它有一个带有嵌套属性的子模型。我有一个表单,可以同时更新父级和子级。

这是我的模型:

class Parent < ActiveRecord::Base
has_one :child
accepts_nested_attributes_for :child
end

class Child < ActiveRecord::Base
belongs_to :parent
end

表格 View :
<%= form_for @parent, do |f| %>
<%= f.text_field :parent_name %>
<%= f.fields_for @parent.child do |c| %>
<%= c.text_field :child_name %>
<% end %>
<%= f.submit "Save" %>
<% end %>

父 Controller :
class ParentsController < ApplicationController      
def update
@parent = Parent.find(params[:id])
@parent.update(params.require(:parent).permit(:parent_name, child_attributes: [:child_name]))

redirect_to @parent
end
end

当我保存表单时,父级会更新,但子级不会。我究竟做错了什么?

最佳答案

您的表单代码的嵌套部分有问题,应该是

<%= form_for @parent, do |f| %>
<%= f.text_field :parent_name %>
<%= f.fields_for :child do |c| %> <<<<<<<<<<< this line was wrong
<%= c.text_field :child_name %>
<% end %>
<%= f.submit "Save" %>
<% end %>

您也必须在 params 属性中传递 id :
@parent.update(params.require(:parent).permit(:parent_name, child_attributes: [:id, :child_name]))

干杯

关于ruby-on-rails-4 - Rails 4 - 使用嵌套属性保存对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17712243/

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