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

Ruby on Rails: как использовать объект-заполнитель по умолчанию в select_tag?

 <%= select_tag(:services, 
                       options_from_collection_for_select(Service.all, :id, :name))%>

И он отображает все службы...

Но я хочу, чтобы это было что-то вроде:

Select a service
Service1
Service2
Service3
Service4
4b9b3361

Ответ 1

<%= select_tag(:services, 
               Service.all.collect { |c| [c.id, c.name] }.
               insert(0, "Select a Service"))%>

Как ответил на вопрос, это для Rails 2.3. Для Rails 3 см. Ответ Пратан Тананарт.

Ответ 2

В большинстве случаев вы не хотите ничего добавлять к массиву напрямую; любой из них является более чистым решением:

  • Используйте :prompt => "Placeholder", если вы хотите, чтобы заполнитель отображался только тогда, когда атрибут равен нулю при отображении формы. Он будет выбран по умолчанию, но ничего не будет сохранено, если пользователь отправит. Если атрибут уже заполнен [возможно, потому что a) существует значение по умолчанию или b) это форма редактирования], элемент-заполнитель будет полностью исключен из списка.
  • Используйте :include_blank => "Placeholder", если вы хотите включить заполнитель в отображаемый список в любое время.