是否可以使用act-as-taggable-on管理所有标记(添加,编辑和删除)

时间:2016-07-17 22:32:56

标签: ruby-on-rails acts-as-taggable-on

我使用act-as-taggable-on gem只有一个(默认)标签列表。我想知道是否可以创建一个表单来管理具有以下功能的标签。 (通过所有答案,只找到Activeadmin的解决方案。)

  1. 我设法使用ActsAsTaggableOn :: Tag.all获取所有标签的列表(跨关联模型)。
  2. 我希望能够编辑每个标签名称(文本输入字段)。
  3. 我希望能够删除(销毁)标签(复选框)。
  4. 最后,我希望能够在列表中添加标签,因为我们只使用用户可以添加到不同模型的类别。 (可能是find_or_create_with_like_by_name
  5. 我如何构建两种形式1-3和4?使用acts_as_taggable可以实现吗?感谢您提前提示。

2 个答案:

答案 0 :(得分:0)

您可以编辑标签并将其添加到对象中。因此,如果您有照片模型,您可以执行.. / photos / 1 / edit编辑照片和标签...与添加它们的方式相同。为此,您的Photo型号上有一列。问题4我不明白......您想给他们一个可供选择的标签列表吗?如果是这样,这很容易使用集合选择。

如果你搜索,你会发现很多形式的例子。

答案 1 :(得分:0)

自己解决了。

视图

添加标签

form_tag "/tags" do
  text_field_tag :name
  submit_tag "Add tag"

更新和删除标签

@tags.each do |tag|
  text_field_tag "tags[#{tag.id}]name", tag.name, class: 'name'
  <button class="update-tag radius small">Save</button>
  <button class="delete-tag radius small">Delete</button>


$(function(){
  $(".delete-tag").on("click", function(){
    var row = $(this).closest("tr");
    $.post("/tags/" + row.data("id"), {_method: "DELETE"}, function(){
      row.remove();
    })
  })

  $(".update-tag").on("click", function(){
    var row = $(this).closest("tr");
    $.post("/tags/" + row.data("id"), {_method: "PUT", name: row.find('.name').val()})
  })
})

控制器

class TagsController < ApplicationController
  def create
    name = params[:name]
    ActsAsTaggableOn::Tag.create(name: name)
    redirect_to :back
  end

  def destroy
    tag = ActsAsTaggableOn::Tag.find(params[:id])
    tag.destroy
    render json: {success: true}
  end

  def update
    tag = ActsAsTaggableOn::Tag.find(params[:id])
    tag.update_attributes(name: params[:name])
    render json: {success: true}
  end
end