我使用act-as-taggable-on gem只有一个(默认)标签列表。我想知道是否可以创建一个表单来管理具有以下功能的标签。 (通过所有答案,只找到Activeadmin的解决方案。)
我如何构建两种形式1-3和4?使用acts_as_taggable可以实现吗?感谢您提前提示。
答案 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