【问题标题】:Manipulating tags with acts_as_taggable_on and ActiveAdmin使用acts_as_taggable_on 和ActiveAdmin 操作标签
【发布时间】:2012-05-14 18:07:31
【问题描述】:

我有一个通过 ActiveAdmin 访问的 Post 模型。它也可以使用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

提前致谢。

【问题讨论】:

  • 我正在尝试做同样的事情,但是因为actastaggable on 需要一个用逗号分隔的字符串,所以我无法获得强参数来接受多选下拉列表提供的数组。你是怎么处理的?

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


【解决方案1】:

代替

:collection => ActsAsTaggableOn::Tag.all

试试

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

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

【讨论】:

  • ActsAsTaggableOn::Tag.pluck(:name) 会更好,因为它不会在提取名称之前将所有标签加载到内存中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多