我尝试使用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来完成它?
答案 0 :(得分:1)
= 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 =您选项的值属性
名称 =您选项的显示属性