首页 > 解决方案 > Rails 5.1.4 fields_for 用于多个对象

问题描述

我有一个AuthorBook模型。Author 可以有很多Book,但 Book 只能有一个Author

在创建新的过程中Author,如何添加一个“新书”按钮,该按钮将为Author表单添加一个 fields_for?我希望能够添加多个Book. 到目前为止,我找到的解决方案只是添加固定数量的fields_for,如下所示:

<%= form_with(model: author, local: true) do |form| %>
...
    <% 5.times do %>
        <%= form.fields_for :books do |books| %>
        ...
        <% end %>
    <% end %>
...
<% end %>

我不希望它是这样的,如果作者有超过5本书怎么办?我希望能够动态添加书籍。有什么解决办法吗?

标签: ruby-on-railsruby

解决方案


如果您可以添加新的依赖项,可以使用cacoon gem,它可以让您更轻松地处理嵌套表单。

这是一个额外的依赖项,但添加新关联记录的代码很简单:

<%= form_for author do |f| %>
  ...
  <%= f.fields_for :books do |book| %>
    <%= render 'book_fields', f: book %>
    <%= link_to_add_association 'add book', f, :books %>
  <%end%>

推荐阅读