1

我尝试使用 collection_select 显示下拉列表。但是,在搜索了一段时间后,我仍然无法理解如何设置此方法的参数。

class Entry < ActiveRecord::Base
    has_many :addresses
    attr_accessible :email, :first_name, :last_name
end
class Address < ActiveRecord::Base
    belongs_to :entry
    has_one :address_type
    attr_accessible :type, :city, :state, :street, :zip
end

class AddressType < ActiveRecord::Base
    belongs_to :address
    attr_accessible :name
end

我想为每个地址显示一个从模型“AddressType”中选择的名为“AddressType”的下拉列表。“AddressType”的唯一值是在seeds.rb 中创建的“Home”、“Work”和“Other”。这是 _form 代码:

.form-inputs
  5     = f.collection_select (:AddressType, :name, AddressType.all, :id, :AddressType)           
  6     = f.input :street
  7     = f.input :city
  8     = f.input :state
  9     = f.input :zip

我不知道如何设置collection_select的参数,所以我的'5'行肯定是错误的。其他文档和示例是如此令人困惑,所以任何人都可以解释我如何使用 collection_select 来做到这一点?

4

2 回答 2

1

集合选择(对象,方法,集合,值方法,文本方法,选项 = {},html_options = {})

= f.collection_select (:type, AddressType.all, :id, :name)

当你使用时form.collection_select,你应该省略对象,例如

form.collection_select(method, collection, value_method, text_method, options = {}, html_options = {})
于 2013-02-26T08:10:29.797 回答
1

确保您获得的地址类型没问题。

使用以下内容:

@addresses = AddressType.all


f.collection_select ("address_type", "name", @addresses, "id", "name")

在哪里,

AddressType = 您的型号,

name = 模型字段名称,

@addresses = 地址类型表中包含“家庭”、“工作”和“其他”的集合,

id = 您选项的值属性

名称= 显示您的选项的属性

于 2013-02-26T08:22:28.757 回答