Rails多选默认值

时间:2010-10-15 16:16:33

标签: ruby-on-rails

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

我的多选工作方式如下:

<%= 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 个答案:

答案 0 :(得分:6)

通过执行以下操作来计算出来:

控制器:

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

希望这有助于某人!