🫠

【Rails6】collection_selectで複数選択時の初期表示について

2024/05/22に公開

バージョン

  • Ruby 3.2.3
  • Ruby on Rails 6.1.7
-  <%= f.collection_select :item, @object, :id, :name, { include_blank: '選択してください' }, multiple: true %>
+  <%= f.collection_select :item, @object, :id, :name, multiple: true, data: { placeholder: '選択してください' } %>

collection_selectはオプションで初期表示にinclude_blankpromptを渡せますが、multiple: trueで複数選択の指定をした場合には、項目の1つとして表示されてしまいます。
https://railsdoc.com/page/collection_select

一方でcollection_selectの定義元ではhtml_optionsを受け取れることから、今回はカスタムデータ属性data: {}を渡すことで無事に表示させることができました。

https://github.com/rails/rails/blob/main/actionview/lib/action_view/helpers/form_options_helper.rb#L860-L862

Discussion