通过两个属性关联的简单形式

时间:2015-02-12 23:29:39

标签: ruby-on-rails ruby

我正在开发一个rails项目,其中模型textbook有许多book模型。 textbook模型有多个属性,其中两个属于publisherbranch。在book的“添加新页面”中,我需要根据现有发布商和该发布商的相应分支为该图书指定publisherbranch。然后在选择它们之后,将完成关联,并且将知道textbook的相应book记录。我没有为publisher定义branchbook属性,因为我想在需要时从关联的textbook中检索它们。这样,如果稍后相关的textbook发生任何更改,则会自动为book更新。

我正在使用simple_form。我的问题是,在形式上,我不知道如何使用
= f.input

publisher指定branchbook,然后指定相应的textbook记录。如果它只是一个属性,我可以使用

= f.association :textbook

但是因为我需要分别指定两个属性,我不知道该怎么做。

你能帮我吗?

1 个答案:

答案 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