在使用nested_form (has_many belongs_to关联)更新对象时创建另一个对象,可以按照以下步骤进行操作:
gem 'nested_form'
class Post < ApplicationRecord
has_many :comments
accepts_nested_attributes_for :comments, allow_destroy: true
end
class Comment < ApplicationRecord
belongs_to :post
end
<%= nested_form_for @post do |f| %>
<%= f.label :title %>
<%= f.text_field :title %>
<%= f.fields_for :comments do |comment_form| %>
<%= comment_form.label :content %>
<%= comment_form.text_area :content %>
<%= comment_form.link_to_remove "删除评论" %>
<% end %>
<%= f.link_to_add "添加评论", :comments %>
<%= f.submit "保存" %>
<% end %>
def update
@post = Post.find(params[:id])
if @post.update(post_params)
# 更新成功的逻辑
else
# 更新失败的逻辑
end
end
private
def post_params
params.require(:post).permit(:title, comments_attributes: [:id, :content, :_destroy])
end
在上面的代码中,comments_attributes参数允许你更新和创建关联的Comment对象。使用:_destroy参数可以标记要删除的关联对象。
这样,当你提交表单时,它将更新Post对象并创建/更新关联的Comment对象。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云数据库(TencentDB)、腾讯云对象存储(COS)等。你可以在腾讯云官网上找到这些产品的详细介绍和文档链接。
希望以上回答能够满足你的需求,如果还有其他问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云