2010-02-03 60 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

相關問題