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