rails:需要对collection_select进行一些解释

时间:2013-02-26 07:49:24

标签: ruby-on-rails collections selection

我尝试使用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”的唯一值是在Seed.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的参数,所以我的line'5'肯定是错的。其他文档和示例非常令人困惑,任何人都可以解释如何使用collection_select来完成它?

2 个答案:

答案 0 :(得分:1)

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

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

当您使用 form.collection_select 时,您应该省略 object ,例如

form.collection_select(method, collection, value_method, text_method, options = {}, html_options = {})

答案 1 :(得分:1)

确保您获得的地址类型正常。

使用以下内容:

@addresses = AddressType.all


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

其中,

AddressType =您的模型,

名称 =型号字段名称,

@addresses =从AddressType表中包含“Home”,“Work”和“Other”的集合,

id =您选项的值属性

名称 =您选项的显示属性