Подтвердить что ты не робот

Rails 3: f.select - options_for_select

У меня есть форма в моем приложении Ruby on Rails3 с выпадающим меню, это мой текущий код для опции выбора:

<%= f.select :phone_type, options_for_select(["Select One", "Cell", "Work", "Office", "Home", "Other"],:disabled => ["Select One"]), :class => 'genForm_dropBox' %>

Из моего понимания это должно быть "Выбрать один" в качестве параметра по умолчанию, когда кто-то открывает страницу, но если они не выбирают одну из других опций, появляется ошибка, когда они попадают в submit.

Это верно в браузерах, таких как Safari, Chrome и IE7, но в Firefox и IE8 он отображает "Ячейка" в качестве первого параметра, так как Select One отключен.

Мне бы хотелось, чтобы он отображал "Выбрать один" по умолчанию, но при отправке формы он будет использоваться как непригодный для использования. Нужно ли мне использовать script в контроллере или модели? или у меня это неправильно закодировано?

4b9b3361

Ответ 1

для тех, кто хочет включить эту функцию, я применил новый подход к концу модели. Поскольку все поля должны быть заполнены для того, чтобы пользователь мог отправить и не получить предупреждение об ошибке, я дал опции "Отправить один" значение по умолчанию ничто. Вы можете посмотреть следующий код, чтобы узнать, как я это сделал.

<%= f.select :phone_type, options_for_select([["Select One", ""], "Cell", "Work", "Office", "Home", "Other"]), :class => 'genForm_dropBox' %>

Ответ 2

Это немного чище:

<%= f.select :phone_type, [ 'Cell', 'Work', 'Office', 'Home', 'Other' ], :prompt => 'Select One' %>

Аргумент: prompt генерирует параметр с пустым значением.

Ответ 3

В Rails 4 этот подход хорошо работает для меня.

<%= f.select :status, options_for_status, {}, prompt: 'Select One' %>

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

def options_for_status
  [
    ['First Option','first_option'],
    ['Second Option','second_option']
  ]
end

Ответ 4

Спасибо всем, кто внес свой ответ.

Мне нужен был аналогичный код для проекта, над которым я работаю, и мне очень понравился подход, которым занимался Райан Бернетт.

Это то, что сработало для меня с помощью Rails 4.1.0.

<%= f.select :season, options_for_seasons, :prompt => 'Select One' %>

Затем я определил параметры в моем помощнике.

def options_for_seasons
  ['Spring', 'Summer', 'Autumn', 'Winter']
end

Я пошел с :prompt => 'Select One', потому что я только хотел, чтобы опция "Выбрать один" была указана в форме редактирования, если сезон ранее не был выбран.

Ответ 5

Добавление [ "Выбрать один", ""] приводит к тому, что экран редактирования всегда отображает "Выбрать один", а не сохраненное значение. Rails 3.1 (2012 Aug 17)

Ответ 6

может быть <%= f.select :phone_type, options_for_select(["Cell", "Work", "Office", "Home", "Other"]), :prompt => "Select One", :class => 'genForm_dropBox' %>