【发布时间】:2020-08-22 00:13:03
【问题描述】:
我正在尝试为可以有多个 BookAuthor 对象的 Book 对象实现嵌套表单。我已按照this 教程使用 Rails 6 中的 Cocoon gem 执行此操作,但它不起作用。表单本身在前端运行良好,可以正确添加和删除 BookAuthor 字段。服务器接收到的参数包含正确数量的 BookAuthor 属性,但这些子对象不会写入数据库,即使主 Book 对象写入。我已经能够让关联正常工作。
javascript 或 rails 控制台都没有错误输出。
注意:忽略 book.rb 中的include Hashid::Rails,我尝试了使用和不使用它,并且发生了同样的事情。另外,请忽略 book.rb 中对 Chapter 对象的任何引用,因为它们还不是表单的一部分。
以下是相关模型、视图和控制器的代码。模型文件还包含该模型的表模式。如果您需要更多代码,请告诉我。
服务器接收的参数(从服务器控制台):https://pastebin.com/nxAXkD3T
book.rb:https://pastebin.com/Xtxf52eT
book_author.rb:https://pastebin.com/miFhb5wR
_form.html.haml:https://pastebin.com/YaW1gRUe
_book_author_fields.haml:https://pastebin.com/FJw7CR2f
books_controller.rb: https://pastebin.com/0NYsCc7x
application.js:https://pastebin.com/rZLpe0iS
宝石文件:https://pastebin.com/TcGrQ9f5
Gemfile.lock: https://pastebin.com/apCMxNkJ
package.json: https://pastebin.com/9U7mB2NK
yarn.lock:https://pastebin.com/H3AzG3Bi
【问题讨论】:
-
edgeapi.rubyonrails.org/classes/ActionController/… 我以前没见过“params.fetch()”,我总是使用“params.require()”,所以我检查了 API,没有看到“ fetch()" 用于控制器中的强参数 - 我会将 "fetch" 更改为 "require" 然后检查。
-
删除
attr_accessor :book_authors_attributes。在您的 book.rb 中,保存您的文件,然后查看是否有效。 -
@DanPerry cool 你能接受解决方案吗?
-
@BKSpureon 完成
标签: ruby-on-rails ruby nested-forms ruby-on-rails-6 cocoon-gem