ruby-on-rails-4 – Rails 4 – 使用嵌套属性保存对象
发布时间:2020-12-17 03:48:05 所属栏目:百科 来源:网络整理
导读:我有一个父模型,它有一个具有嵌套属性的子模型.我有一个表单可以更新父级和子级. 这是我的模特: class Parent ActiveRecord::Base has_one :child accepts_nested_attributes_for :childendclass Child ActiveRecord::Base belongs_to :parentend 表格视图
我有一个父模型,它有一个具有嵌套属性的子模型.我有一个表单可以更新父级和子级.
这是我的模特: class Parent < ActiveRecord::Base has_one :child accepts_nested_attributes_for :child end class Child < ActiveRecord::Base belongs_to :parent end 表格视图: <%= 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 %> 家长控制器: 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])) 干杯 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |