我正在开发一个rails项目,其中模型textbook
有许多book
模型。 textbook
模型有多个属性,其中两个属于publisher
和branch
。在book
的“添加新页面”中,我需要根据现有发布商和该发布商的相应分支为该图书指定publisher
和branch
。然后在选择它们之后,将完成关联,并且将知道textbook
的相应book
记录。我没有为publisher
定义branch
和book
属性,因为我想在需要时从关联的textbook
中检索它们。这样,如果稍后相关的textbook
发生任何更改,则会自动为book
更新。
我正在使用simple_form
。我的问题是,在形式上,我不知道如何使用
= f.input
为publisher
指定branch
和book
,然后指定相应的textbook
记录。如果它只是一个属性,我可以使用
= f.association :textbook
但是因为我需要分别指定两个属性,我不知道该怎么做。
你能帮我吗?
答案 0 :(得分:0)
我不确定您可以选择哪些发布商和分支属性作为用作值的选项,但如果您的表单需要从一组选项中进行选择,您只需在表单中将这些数据值称为集合,即可指定可用于教科书记录中任何给定属性的值。 E.g:
= simple_form_for :textbook do |f|
= f.input :publisher, collection: Publisher.all, as: :select #collection can be any values
= f.input :branch, as: :text #if user can manually type in a branch name
= f.simple_fields_for :book do |b| #this is a nested form field
= b.input :name #instead of :name, use the name of attributes you have for this table/model
如果您的Branch和Publisher值选项是值数组,您可以调用上面的集合,并通过引用相关模型{{1来扩展表单以使用嵌套字段来编辑有关Book表本身的信息。然后在simple_fields_for
添加Textbook
,以便嵌套accept_nested_attributes_for
模型可以在此表单提交中由Book
模型更新:
book.rb:
Textbook
如果您使用的是Rails 4,请在执行此操作时注意强参数 - 确保在更新时明确定义控制器中的强参数。
如果这有帮助,请告诉我。另外,请务必仔细检查simple_form的文档。 https://github.com/plataformatec/simple_form