使用acts_as_taggable_on和ActiveAdmin处理标记

Agi*_*gis 11 ruby-on-rails acts-as-taggable-on ruby-on-rails-3 activeadmin ruby-on-rails-3.2

我有一个Post模型,我通过ActiveAdmin访问.它也可以使用acts_as_taggable_on gem进行标记.因此,管理员可以添加,编辑或删除特定帖子中的标签.

在管理面板中为资源添加标记功能的常规方法是在admin/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
Run Code Online (Sandbox Code Playgroud)

但是,我希望从多选表单字段中选择标记,而不是在文本字段中手动输入(就像上面的代码一样).所以我试过这样做:

      f.input :tag_list, :as => :select,
                         :multiple => :true,
                         :collection => ActsAsTaggableOn::Tag.all
Run Code Online (Sandbox Code Playgroud)

但它没有按预期工作.这实际上创建了带有名称的一些整数值的新标签,并将它们分配给该帖子.有人告诉我需要额外的代码才能使用.

关于如何做到这一点的任何线索?这是我的模型,以防万一:http://pastie.org/3911123

提前致谢.

Ste*_*ssi 10

代替

:collection => ActsAsTaggableOn::Tag.all
Run Code Online (Sandbox Code Playgroud)

尝试

:collection => ActsAsTaggableOn::Tag.pluck(:name)
Run Code Online (Sandbox Code Playgroud)

将集合设置Tag.all为将使用标记的ID标记您的帖子,因为这是标记默认标识的方式(这是名称的整数值来自的位置).map(&:name)告诉表单生成器使用标记的名称.

  • `ActsAsTaggableOn :: Tag.pluck(:name)`会更好,因为在提取名称之前它不会将所有标记加载到内存中. (5认同)