代码之家  ›  专栏  ›  技术社区  ›  dennismonsewicz

Rails多选默认值

  •  2
  • dennismonsewicz  · 技术社区  · 15 年前

    我正在编写一个脚本,允许管理员为用户分配多种语言。

    我的multi-select工作方式如下:

    <%= 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 回复  |  直到 13 年前
        1
  •  6
  •   dennismonsewicz    15 年前

    通过执行以下操作,解决了这个问题:

    控制器:

    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的数组变量,然后在视图中使用它来告诉我的multi-select自动高亮显示哪些字段。

    视图:

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

    希望这对别人有帮助!