2010-02-03 58 views
32

我想要有一个多选框。选择框将包含数据库中的所有商店,但用户所属的商店将被选中。导轨选择标签,预先选择多个值

我走了一半。我有一个选择框,其中包含数据库中的所有商店。我无法选择用户所属的。

我有以下:

<%= select_tag 'stores[]', options_for_select(@stores.map {|s| [s.store_name, s.store_id]}, 
:selected => @user.stores.map {|j| [j.store_name, j.store_id]}), :multiple => true, :size => 
10 %> 

我有存储的地图用户所属的。它是:

@user.stores 

回答

49

相当数量的审判后和错误以下为我工作:

<%=select_tag 'stores[]', options_for_select(
@stores.map {|s| [s.store_name, s.store_id]}, 
@user.stores.pluck(:id) 
), :multiple => true, :size => 10%> 
+4

FYi,只是一个微小的spaceave /不错的Ruby - 你可以缩短@ user.stores.map {| j | j.store_id}到@ user.stores.map(&:store_id) – Squadrons 2013-01-16 19:33:20

+1

谢谢bro!但我认为你可以使用'@ user.store_ids'来代替'pluck' – 2017-07-28 13:26:44

11

这样做将是使用options_from_collection_for_select助手方法的另一种方式。它会看起来像这样:

<%= select_tag 'stores[]', options_from_collection_for_select(@stores, :store_id, :store_name, [4,5,6]), multiple: true, size: '10%' %> 
+0

我不知道这个问题是否可用,但这应该是IMO的认可答案。 – gosukiwi 2014-12-10 12:39:14

+1

我发现名称和身份证号必须颠倒。 – 2015-01-18 05:21:28

+0

我的荣幸@yagudaev。我很失望,所选条目的列表需要是ID,并且:store_id不能应用于:( – 2015-01-20 05:54:56

相关问题