ruby-on-rails - Rails 5.1.4 fields_for 用于多个对象
问题描述
我有一个Author
和Book
模型。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本书怎么办?我希望能够动态添加书籍。有什么解决办法吗?
解决方案
如果您可以添加新的依赖项,可以使用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%>
推荐阅读
- ios - Swift 让 UITableView 填满手机的整个视口
- python - 如何将元组排序和分组为 CSV 以在 Python 中返回平均值和求和值
- javascript - 从其他按钮触发按钮单击
- svelte - 从开槽组件发出的事件
- javascript - Shopify - 在内联部分/片段脚本中使用您的 JS 库等
- tensorflow - `tf.data.Dataset` 在 CPU 上运行,除了 `PrefetchDataset`?
- c# - Chrome 未在指定的移动设备上运行(移动仿真模式)
- tensorflow - 使用 tensorflow 进行数据增强后生成的图像变体数量
- c# - Filewatcher 和队列管理
- programming-languages - 是否可以围绕实体-组件-系统架构建立一种语言?