我正在通过acts_as_taggable_on为我的应用添加标记功能。
那个宝石没有添加控制器,但我想。我正在为我的Node
模型添加标记功能。
在我的NodeController
上,我知道我可以简单地添加这样的显式操作:
def add_tagged_user
end
def remove_tagged_user
end
def tagged_users
end
但这并不是很安静或Railsy。
相应的路线如下所示:
resources :nodes do
match :add_tagged_user, via: [:post], on: :member
match :remove_tagged_user, via: [:delete], on: :member
match :tagged_users, via: [:get], on: :member
end
是否有RESTful或更多Railsy方法来执行此操作?
答案 0 :(得分:0)
您可以使用单个TagsController,其路由与RESTful资源匹配。
像
这样的东西<强>路线强>
# routes.rb
resources :nodes do
resources :tags, only: [:show, :create, :update]
end
resources :other_resources do
resources :tags, only: [:show, :create, :update]
end
<强>控制器强>
class TagsController < ApplicationController
before_action :load_taggable
def create
@taggable.tags.create(tag_params)
end
private
def load_taggable
# switches on params
@taggable = if params[:node_id]
Node.find(params[:node_id]
elsif # other things that are taggable
# OtherThing.find(...)
end
end
end