Быстрый вопрос по конструктору форм rails

Мне нужно создать статус выбора с именем и идентификатором, подобным этому, но без использования построителя форм для одного из полей.

<select name="link_list[links][][link_to_path]" id="link_list_links__link_to_path">

Все остальные поля создаются так

f.collection_select "link_to_path", LinkList.all, :url, :name

но мне нужно сделать это, создав идентификатор и имя вручную следующим образом:

collection_select "link_list[links][]", "link_to_path",LinkList.all, :url, :name

это не работает в данный момент.

У кого-нибудь есть ответ на это?

большое спасибо Рик


person rick    schedule 21.03.2011    source источник


Ответы (1)


Вы хотите использовать options_for_select:

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-

options_for_select(container, selected = nil)

Например:

options_for_select([["Dollar", "$"], ["Kroner", "DKK"]])

Это генерирует следующий HTML:

 <option value="$">Dollar</option>\n<option value="DKK">Kroner</option>

Итак, в вашем случае вам нужен массив ссылок с их именем и URL-адресом, например:

links = [['Google', 'www.google.com'], 'Yahoo', 'www.yahoo.com']

Тогда вы можете использовать select_tag

<%= select_tag :link, options_for_select(links)%>

Затем, если вы хотите иметь ссылку по умолчанию, вы просто вводите массив следующим образом:

links.insert(0, ["Default", "www.twitter.com"])
person thenengah    schedule 21.03.2011