Rails4 リストボックスで複数登録
リストボックスで複数登録するときにちょっと手こずったので、めも。
ビューに下記のように記載。
<%= form_for(@sales) do |f| %> <div class="field"> <%= f.label :customer_id %><br> <%= f.select :customer_id, @users.map {|user| [user.name, user.id]}, {:selected=>f.object.customer_id}, :multiple => true, :size => @users.size %> </div> <div class="actions"> <%= f.submit %> </div> <% end %>
コントローラーでは下記で選択されたcustomer_idを取得することができる。
params[:sales][:customer_id]
しかし、画面で1、3、5を選択したとすると、この中身は["", "1", "3", "5"]となっており、選択していない""が入ってしまうことに注意。
参考:
プログラマのオッサンの唄: Railsでリストボックスを使って親子テーブルを同時に更新するサンプル
html - Why is the first element always blank in my Rails multi-select, using an embedded array? - Stack Overflow