开发者

Ruby on Rails: how do I use a default placeholder thing in a select_tag?

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

And it displays all the services...

But I want it to be something like:

Select a service
Service1
Service2
Service3
Servi开发者_如何学JAVAce4


Most of the time, you don't want to append anything to the array directly; either of these is a cleaner solution:

  • Use :prompt => "Placeholder" if you want the placeholder to show up only when the attribute is nil at the time the form is rendered. It will be selected by default, but nothing will be saved if user submits. If the attribute is already populated [possibly because a) there's a default value or b) it's an edit form], the placeholder item will be omitted from the list entirely.
  • Use :include_blank => "Placeholder" if you want to include the placeholder in the rendered list at all times.


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

As answered for the question, this is for Rails 2.3. For Rails 3, see Prathan Thananart's answer.


The better way to do this would be to use the :prompt parameter. Something like:

select("post", "person_id", Person.all.collect {|p| [ p.name, p.id ] }, {:prompt => 'Select Person'})

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜