rails选择预先选择了多个值的标签

Omn*_*ent 35 ruby-on-rails

我想要一个多选框.选择框将包含数据库中的所有商店,但将选择用户所属的商店.

我已经到了一半.我有一个选择框,其中包含数据库中的所有商店.我无法选择用户所属的那些.

我有以下内容:

<%= 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 %>
Run Code Online (Sandbox Code Playgroud)

我有一个地图,其中包含用户所属的商店.它在:

@user.stores
Run Code Online (Sandbox Code Playgroud)

Omn*_*ent 54

经过相当多的反复试验后,以下内容对我有用:

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

  • FYi,只是一个很小的spaceave /漂亮的Ruby - 你可以缩短@ user.stores.map中所选的选项{| j | j.store_id}到@ user.stores.map(&:store_id) (5认同)
  • 多谢兄弟!但我认为您可以使用`@user.store_ids`代替`pluck` (4认同)

Mic*_*aev 14

另一种方法是使用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%' %>
Run Code Online (Sandbox Code Playgroud)