首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rails:提交包含多个对象的表单

在Rails中,提交包含多个对象的表单通常需要使用嵌套表单(nested forms)。嵌套表单允许你在一个表单中同时创建和更新多个相关的对象。以下是一个简单的例子,说明如何在Rails中创建一个包含多个对象的表单。

首先,确保你的模型关系已经设置好。例如,假设你有一个Author模型和一个Book模型,并且Author模型has_manyBook模型。

代码语言:ruby
复制
class Author< ApplicationRecord
  has_many :books
  accepts_nested_attributes_for :books
end

class Book< ApplicationRecord
  belongs_to :author
end

接下来,在AuthorsController中,确保你允许books_attributes的参数传递。

代码语言:ruby
复制
def author_params
  params.require(:author).permit(:name, books_attributes: [:id, :title, :_destroy])
end

然后,在app/views/authors/_form.html.erb文件中创建一个嵌套表单。

代码语言:html
复制
<%= form_with(model: author, local: true) do |form| %>
  <%= form.label :name %>
  <%= form.text_field :name %>

  <%= form.fields_for :books do |book_form| %>
    <%= book_form.label :title %>
    <%= book_form.text_field :title %>
  <% end %>

  <%= form.submit "Submit" %>
<% end %>

这个表单允许你在创建和更新Author时同时创建和更新多个Book对象。

在这个例子中,我们使用了accepts_nested_attributes_for方法来允许Author接受嵌套的Book属性。同时,在author_params方法中,我们使用permit方法来允许books_attributes的参数传递。

最后,在app/views/authors/_form.html.erb文件中,我们使用fields_for方法来创建一个嵌套表单,这样你就可以在一个表单中同时创建和更新多个相关的对象。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券