プルダウンの初期状態を未選択にする

日付プルダウン

scaffoldでページを作成すると日付プルダウンは現在の日付が初期表示となってしまう。
これを空の状態にするには下記のようにviewを修正する。

修正前

  <p>
    <%= f.label :start_date %><br />
    <%= f.date_select :start_date  %>
  </p>


修正後

  <p>
    <%= f.label :start_date %><br />
    <%= f.date_select :start_date ,:include_blank => true %>
  </p>


未選択の場合に特定の文字を表示したい場合

  <p>
    <%= f.label :start_date %><br />
    <%= f.date_select :start_date ,:include_blank => "選択してください" %>
  </p>

プルダウン

プルダウンの初期状態を未選択にする場合はオプションで:include_blank => trueを指定する。
特定の文字を表示したい場合は、trueの部分を表示したい文字列にすればOK。

  <p>
      <%= f.label :priority_master_id %><br />
      <%= f.collection_select(:priority_master_id, PriorityMaster.find(:all), :id, :label, {:include_blank => true}) %>
  </p>

サンプル

ソース
<h1>New task</h1>

<% form_for(@task) do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :task %><br />
    <%= f.text_field :task %>
  </p>
  <p>
      <%= f.label :priority_master_id %><br />
      <%= f.collection_select(:priority_master_id, PriorityMaster.find(:all), :id, :label, {:include_blank => true}) %>
  </p>
  <p>
    <%= f.label :start_date %><br />
    <%= f.date_select :start_date ,:include_blank => true %>
  </p>
  <p>
    <%= f.label :end_date %><br />
    <%= f.date_select :end_date %>
  </p>
  <p>
    <%= f.label :memo %><br />
    <%= f.text_area :memo %>
  </p>
  <p>
    <%= f.submit "Create" %>
  </p>
<% end %>

<%= link_to 'Back', tasks_path %>
実行結果