集合选择在第一个位置返回空值

时间:2012-11-10 07:08:10

标签: ruby-on-rails forms multi-select

我只是想让列表框工作,允许选择多个值。它正确传递一组用户ID,但传递的第一个参数为null。我在源表中没有任何空值,所以我很困惑这来自哪里。我可能做了一些基本的错误,所以任何帮助都非常感激。

来自日志文件:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"0Ia2kGYj1qidP6saEOfAjywDQkbds+cbFBzJ1H3UyRE=", "user_ids"=>["", "3", "4"], "commit"=>"Add Users to Group", "id"=>"create_multiple"}
  `[1m[35mUser Load (1.0ms)[0m  SELECT `users`.* FROM `users` WHERE `users`.`user_id` IN (0, 3, 4)`

来自视图的代码:

<%= form_for :user, :url => create_multiple_user_roles_path, :html => { :method => :put } do |f| %>
  <p>
    <%= collection_select(:user, :user_ids, @users, :id, :last_name,
      { :selected => :user_ids },
    {:multiple => true, :name => 'user_ids[]', :size => 10, :include_blank => false }  ) %>
  </p>
  <%= submit_tag "Add Users to Group" %>

2 个答案:

答案 0 :(得分:1)

将include_blank放在第一个哈希中,如下所示

 <%= collection_select(:user, :user_ids, @users, :id, :last_name,
  { :selected => :user_ids,:include_blank => false },
{:multiple => true, :name => 'user_ids[]', :size => 10}  ) %>

答案 1 :(得分:0)

您已添加:included_blank =&gt;假,如果是假,那么我认为你不需要它。请将其删除并再次检查。我希望它能解决你的问题。