10

我有一個Post模型,我通過ActiveAdmin訪問。它也可以使用acts_as_taggable_on gem標記。因此,管理員可以添加,編輯或刪除特定帖子中的標籤。使用acts_as_taggable_on和ActiveAdmin操作標籤

正常的方式來添加標記功能在您的管理面板資源是由管理員/ posts.rb這樣做:

ActiveAdmin.register Post do 
    form do |f| 
    f.inputs "Details", :multipart => true do 
     f.input :tag_list 
     # and the other irrelevant fields goes here 
    end 

    f.buttons 
    end 
end 

不過,我想有從多選選擇的標籤表單域,而不是在文本域中手動輸入(就像上面的代碼一樣)。所以我試過這樣做:

 f.input :tag_list, :as => :select, 
         :multiple => :true, 
         :collection => ActsAsTaggableOn::Tag.all 

但它沒有按預期工作。這實際上會爲名稱創建一些帶有一些整數值的新標籤並將它們分配給該Post。有人告訴我需要額外的代碼才能工作。

任何關於如何完成的線索?這裏是我的模型,以防萬一:http://pastie.org/3911123

在此先感謝。取而代之的

:collection => ActsAsTaggableOn::Tag.all 

+0

我正在嘗試做同樣的事情,但是因爲actsastaggable on需要用逗號分隔的字符串,所以我無法獲取強參數來接受多選下拉列表提供的數組。你是怎麼處理的? – Philip7899

回答

10

嘗試

:collection => ActsAsTaggableOn::Tag.pluck(:name) 

設置集合Tag.all是要標籤與標籤的ID您的文章,因爲這是標籤是如何被默認識別(這就是整名字的值來自於)。 map(&:name)告訴表單構建器使用標籤的名稱。

+4

'ActsAsTaggableOn :: Tag.pluck(:name)'會更好,因爲它在提取名稱之前不會將所有標記加載到內存中。 –