使用acts_as_taggable_on和ActiveAdmin处理标记

时间:2012-05-14 18:07:31

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 activeadmin acts-as-taggable-on

我有一个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

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

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

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

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

提前致谢。

1 个答案:

答案 0 :(得分:10)

而不是

:collection => ActsAsTaggableOn::Tag.all

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

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