MENU

【Rails】「collection_select」タグで「class」が反映されないとき

「collection_select」タグを使用して「class」を設定しようとしたのですが、反映されずに困ったため書き残します。

<%= f.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name, autocomplete: "prefecture_code", class:"form-control form-control-sm col-lg-5" %>


結論から言うと、
「prompt」が必要でした。

<%= f.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name, { prompt: '選択してください' }, autocomplete: "prefecture_code", class:"form-control form-control-sm col-lg-5" %>

ここでは、{ prompt: ‘選択してください’ } を記載しています。
セレクトの最初の表示に「選択してください」が表示されるようになります。



ここで一つ困るのが、
「じゃあ、select_collectionでclassを使うには、promptを絶対に設定しないといけないの?」
と言うことです。


もちろん、promptを無効にした状態でclassを設定する方法があります。

「prompt」の値を「false」にすればOKです。

 { prompt: false }


なので、実際には、

<%= f.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name, { prompt: false }, autocomplete: "prefecture_code", class:"form-control form-control-sm col-lg-5" %>

とった形になります。

よかったらシェアしてね!

この記事を書いた人

目次
閉じる