我正在开发一个脚本,允许管理员为用户分配多种语言。
我的多选工作方式如下:
<%= 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 %>
但是当我进入编辑用户时,他们的语言没有显示为自动选择。我该怎么做呢?
答案 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 %>
希望这有助于某人!