Rails:form_for,带有用于用户选择的子模型

时间:2016-11-02 02:50:11

标签: ruby-on-rails form-for

例如,我有一个product模型。每个产品都有一个名为type的{​​{1}}。现在我想创建产品。

这是我使用slim的简单形式:

ProductType

我希望在这种形式中,有一个下拉列表列出所有类型的产品(从= form_for @product, url: product_path, :html => {:method => post} do f = f.label :name = f.text_field :name = f.submit 'Create' 加载),用户可以选择一个。我怎样才能在rails中使用ProductType

感谢

1 个答案:

答案 0 :(得分:1)

collection_select正是为此目的而构建的。

假设ProductType具有name属性,请尝试

= form_for @product, url: product_path, :html => {:method => post} do f
  = f.label :name
  = f.text_field :name

  # collection_select creates a select box with the options set from the collection
  = f.label :type
  = f.collection_select :type, ProductType.all, :name, :id

  = f.submit 'Create'

查看文档: http://apidock.com/rails/v4.2.7/ActionView/Helpers/FormOptionsHelper/collection_select