Подтвердить что ты не робот

Rails select tag с несколькими предварительно выбранными значениями

Я пытаюсь иметь несколько блоков выбора. select будет содержать все магазины в БД, но будут выбраны те, которые принадлежат пользователю.

Я на полпути. У меня есть поле выбора, в котором есть все магазины в базе данных. Я не могу выбрать те, к которым принадлежит пользователь.

У меня есть следующее:

<%= 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
4b9b3361

Ответ 1

после достаточного количества проб и ошибок для меня работало следующее:

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

Ответ 2

Другой способ сделать это - использовать вспомогательный метод 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%' %>