Это намного проще, если вы используете помощник collection_select:
f.collection_select :event_id, @events, :id, :name
Затем, чтобы выбрать параметр по умолчанию (и он будет выбран при загрузке страницы), вы можете просто назначить его любому объекту, для которого предназначена форма в контроллере. например, вот так:
def new
@events = Event.all
@thing = Thing.new(:event => @events.first)
end
Я не уверен, откуда взялся ваш url_args
, но я предполагаю, что это, вероятно, из параметра в URL, и в этом случае вы можете сделать это:
Thing.new(:event_id => params[:event_id])
И последнее: collection_select
не совсем будет работать с @events
, как вы его указали, поскольку вы используете вложенный массив, когда он ожидает массив объектов, который он может вызвать id
, и name
включено, чтобы получить значения и отобразить текст для опций выбора. Чтобы это исправить, просто переопределите @events
в вашем контроллере, используя один из искателей ActiveRecord, например Event.all
или Event.find(..)
.
Имеет смысл?