2010-12-29 5 views
33
<%= select_tag(:services, 
         options_from_collection_for_select(Service.all, :id, :name))%> 

そしてそれは、すべてのサービスが表示され...Ruby on Rails:select_tagにデフォルトのプレースホルダを使用するにはどうすればよいですか?

しかし、私はそれが何かのようになりたい:質問に対して答えたように、これはRailsの2.3のためである

Select a service 
Service1 
Service2 
Service3 
Service4 

答えて

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

。 Rails 3については、Prathan Thananartの答えを参照してください。

139

ほとんどの時間、あなたは直接の配列には何も追加する必要はありません。あなたは属性は、フォームがレンダリングされるときにnilである場合にのみ、プレースホルダが表示したい場合は

  • 使用:prompt => "Placeholder":これらのいずれかがクリーンなソリューションです。デフォルトで選択されますが、ユーザーが送信した場合は何も保存されません。属性に既に値が設定されている場合(デフォルト値がある場合やb)編集フォームの場合]、プレースホルダ項目はリストから完全に除外されます。
  • レンダリングリストにプレースホルダを常に含める場合は、:include_blank => "Placeholder"を使用します。
+0

完全一致。マーク付きの回答は機能しますが、非常にハッキリです。これはあなたが望むことをするための組み込みオプションです。編集:ちょうど元の答えは2.3だったことを見た。それでも、私は両方の答えを組み合わせるでしょう。 –

+3

':prompt'が私のために働いていません – Uko

+0

もしそうなら:include_blank:true - 空の空白を挿入します。 – mjnissim

関連する問題