2010-10-15 77 views
3

我正在研究一個允許管理員爲用戶分配多種語言的腳本。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 %> 

但是,當我去編輯用戶的自動選擇他們的語言沒有顯示出來。我會如何去做這件事?

回答

7

想通了通過執行以下操作:

控制器:

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

希望這可以幫助別人!

+0

我在google搜索之前做了同樣的事情,看看是否有更好的方法,因爲RubyMine抱怨實例變量的數量:p – nicohvi 2013-03-11 20:00:05