ОБНОВЛЕНИЕ: РЕШЕНИЕ ВНИЗ
Я надеюсь, что кто-то еще потратил некоторое время на решение этой же проблемы ... Я создаю адресную книгу в приложении rails, и у меня есть модель Person и модель Email. Person has_many Emails, и Person accept_nested_attributes_for: emails.
Это все работает отлично - у меня есть вложенная форма, с помощью которой я могу добавлять и удалять электронные письма и их атрибуты в моей форме (используя метод, подобный Railscasts 196-7 ( здесь )). Отправка формы создает человека, а также электронные письма, со всеми правильными ассоциациями.
Проблема в том, что в настоящее время я не могу найти способ использовать тег выбора на модели вложенного электронного адреса, чтобы пользователь мог выбрать KIND (например, рабочий, домашний, другой) для этого электронного письма. Таким образом, редактируя модель Person в том виде, в каком она у меня сейчас, нет простого способа выбрать атрибут, хранящийся в модели rails.
Вот что у меня сейчас:
<%= form_for(@source) do |f| %>
<% f.fields_for :emails do |builder| %>
. . .
<%= builder.text_field :address, :size => 15 %>
<%= render :partial => 'email_select_1' %>0<%= render :partial => 'email_select_2' %>0<%= render :partial => 'email_select_3' %>
Примечание: вышеописанный хакерский способ разрешить мне установить идентификатор позже в javascript, используя те же фрагменты кода. Частицы выделяют жестко запрограммированный выбор и параметры, в данном случае «0», но в JavaScript я могу изменить его на уникальный:
<select id="person_emails_attributes_0_kind" name="person[emails_attributes][0][kind]"><option value="work">work</option><option value="home">home</option><option value="other">other</option></select>
, а затем все остальное выглядит так (сокращенно):
. . .
<% end %>
. . .
<!-- more form stuff, actions, etc... -->
. . .
<% end %>
Есть ли способ использовать для этого хелпер select_tag и заменить мой хакерно-жестко запрограммированный выбор? Если нет, то есть предложения по написанию моего собственного вспомогательного метода?
Заранее спасибо!
ОБНОВЛЕНИЕ: Спасибо Джеффу за решение. Для потомков главное - использовать select, а не select_tag. Тогда вы можете просто сделать что-то вроде этого:
<%= builder.select :kind, [['work', 'work'], ['home', 'home'], ['other', 'other']]%>