2012-03-04 2 views
1

, честно говоря, я почти нахожу html-формы более простыми, чем помощники формы Rails. Я пытаюсь превратить этот текст формы в поле выбора с вариантами Канада, США, Мексика, как струныRails: превращение текстовой формы в поле выбора

<p><%= f.label :country %><br /> 
    <%= f.text_field :country %></p> 

Поскольку модель уже представлена ​​в переменной блок «е», я не знаю, как для изменения синтаксиса, потому что модель обычно представляется первой в сложном хеше переменных и опций http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select

Может ли кто-нибудь мне показать?

ответ

9

должно работать:

<%= f.select :country, [["Canada", "Canada"], ["Mexico", "Mexico"], ["United States", "United States"]] %> 

Вы можете прочитать в Rails Guides & API docs. Как @ ka8751 говорит, хотя, если у вас есть Country модель, collection_select делает это гораздо проще:

<%= f.collection_select :country, Country.all, :id, :name %> 

где :id используется для фактического value от <option> тега и :name используется для того, что отображается.

Если вы не имеют Country модель, вы должны рассмотреть одну ради database normalization.

+0

Я добавляю его как поле модели пользователя для разработки. Это изменяет ваш ответ? – Leahcim

+0

@ Майкл Не должен, нет. У меня нет опыта работы с Devise, но атрибут model все еще является атрибутом модели, хотя и разрабатываем или нет. Были ли какие-либо проблемы с моим ответом? –

0

Я думаю, у вас есть ошибка здесь: вы используете text_field вместо select метод. Для того, чтобы поле выбора, я бы порекомендовал вам использовать collection_select метод:

<%= f.collection_select :country, Country.all, :id, :name %> 

Также есть прекрасный драгоценный камень country_select, чтобы решить вашу проблему, и она используется formtastic formtastic который я также рекомендую вам использовать для создания ваших форм.

+0

Они не ошиблись, они пытаются изменить то, что им нужно использовать '