2013-02-26 4 views
1

Я попытался отобразить раскрывающийся список, используя collection_select. Однако после поиска в течение некоторого времени я все еще не могу понять, как настроить параметры для этого метода.рельсы: нужны некоторые объяснения 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» являются «Home», «Work» и «Other», которые создаются в seeds.rb. Вот код _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?

ответ

1

collection_select(object, method, collection, value_method, text_method, options = {}, 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 = {}) 
+0

Спасибо за вашу помощь. Я могу лучше понять, что происходит с collection_select, это работает. –

+0

У меня вопрос о последующих действиях, после того как я нажал кнопку «создать» на моей новой странице адресов с помощью addresstype, ошибка говорит о неизвестном атрибуте: type, но я определенно включил его в свою модель? –

1

Удостоверяются, что типы адресов, которые вы получаете, прекрасны.

Используйте следующее:

@addresses = AddressType.all 


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

где

AddressType = Ваша модель,

имя = Модель имя поля,

@addresses = Коллекция который содержит «H Ома»,„Работа“и„Другая“из таблицы AddressType,

идентификатора атрибут = значения для вашего варианта

имя = атрибута дисплея для вашего варианта

Смежные вопросы