Rails Multi Select по умолчанию - PullRequest
2 голосов
/ 15 октября 2010

Я работаю над сценарием, который позволяет администратору назначать пользователю несколько языков.

У меня есть мультиселектор, работающий так:

<%= fields_for :users_languages do |u| %>
        <div class="field">
        <%= @lang_list.inspect %>
            <%= u.label :Assign_Languages %><br />
            <%= select_tag :language_id, options_for_select(Language.all.collect {|lang| [lang.english, lang.id]}),:multiple => true, :prompt => 'Select Language' %>
         </div>
    <% end %>

Но когда я иду редактировать пользователя, его языки не отображаются автоматически. Как бы я поступил так?

1 Ответ

6 голосов
/ 15 октября 2010

Понял это, выполнив следующие действия:

Контроллер:

def edit
    @user = User.find(params[:id])
    @users_langs = UsersLanguage.where("user_id = ?", params[:id])
    @lang_list = []

    @users_langs.each do |langs|
      @lang_list << langs.language_id
    end
  end

Я создал переменную массива с именем @lang_list, которую я затем использовал в своем представлении, чтобы сказать мой множественный выборкакие поля выделять автоматически.

Просмотр:

<%= fields_for :users_languages do |u| %>
  <div class="field">
      <%= u.label :Assign_Languages %><br />
      <%= select_tag :language_id, options_for_select(Language.all.collect {|lang| [lang.english, lang.id]}, @lang_list),:multiple => true, :prompt => 'Select Language' %>
   </div>
 <% end %>

Надеюсь, это кому-нибудь поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...