私は試した :include_blank => true
、しかしそれは機能しませんでした。
<select>
<%= options_for_select Model.all.collect{|mt| [mt.name, mt.id]} %>
</select>
コレクションに追加する必要がある場合、どのようにしますか?
この形式が必要だと思います:
select("model_name", "model_id", Model.all.collect {|mt| [ mt.name, mt.id ] }, {:include_blank => 'name of your blank Prompt'})
ところで:モデルがモデルであると仮定したと仮定していました。 collection_selectを使用して使用するには:
collection_select(:model, :model_id, Model.all, :id, :name, :Prompt => true)
_:include_blank
_オプションは、モデルに関連付けられたselect
フィールドにのみ存在すると考えています。
モデルに結び付けられた<%= select(...) %>
の代わりにプレーンな_<select>
_タグを使用すると仮定すると、結果の前に空白のエントリを挿入できます。
_<%= options_for_select Modle.all.collect{|mt| [mt.name, mt.id]}.insert(0, "") %>
_
Select-tagとしてタグ付けしたので、include_blank
でselect_tag
オプションを使用できます。
ドキュメントから:
select_tag "people", options_from_collection_for_select(@people, "id", "name"), :include_blank => true
# => <select id="people" name="people"><option value=""></option><option value="1">David</option></select>
または、options_for_select
を使用できます。
<%= select_tag column.name, options_for_select(Model.all.collect{|mt| [mt.name, mt.id]}), :include_blank => true %>
<%= options_for_select Model.all.collect{|x| [x.name,x.id]}.unshift(["",nil]) %>
洗練されたソリューションが必要な場合は、私のgem rearmed_Rails
これには、安全にモンキーパッチを適用する機能がありますoptions_for_select
およびoptions_for_collection_select
Rails g rearmed_Rails:setup
開いた config/initializers/rearmed_Rails.rb
および次の値をtrue
に変更します
options_for_select_include_blank: true,
options_from_collection_for_select_include_blank: true
今、空白を含める必要があるときはいつでも、次の操作を行ってください。
<%= options_for_select(Model.all.map{|x| [x.name,x.id]}, include_blank: true) %>
= select_tag "some_value", options_for_select(Model.all.collect{ |x| [x.name, x.id]}.prepend([t('helpers.some_name'), nil]), :selected => params[:some_value])