我有一个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
提前致谢。
答案 0 :(得分:10)
而不是
:collection => ActsAsTaggableOn::Tag.all
试
:collection => ActsAsTaggableOn::Tag.pluck(:name)
将集合设置为Tag.all
将使用标记的ID标记您的帖子,因为这是标记默认标识的方式(即名称的整数值来自的位置)。 map(&:name)
告诉表单生成器改为使用标记名称。