我浏览了socialization gem的文档,并没有详细解释如何在我的路由和控制器中设置gem以使跟随和提及功能正常运行。
我想知道是否有人可以告诉我如何在我的路线和控制器中设置此宝石以使其正常运行。
非常感谢一个深思熟虑的答案。
答案 0 :(得分:13)
我是社会化的作者。这是从我们的应用程序中获取的一些代码。我们有一个SocializationsController处理类似&关注每个型号。这很简单。
# routes.rb
## snip ##
resources :users do
post 'follow', to: 'socializations#follow'
post 'unfollow', to: 'socializations#unfollow'
end
resources :categories, only: [:index] do
post 'follow', to: 'socializations#follow'
post 'unfollow', to: 'socializations#unfollow'
end
## snip ##
# socializations_controller.rb
class SocializationsController < ApplicationController
before_filter :load_socializable
def follow
current_user.follow!(@socializable)
render json: { follow: true }
end
def unfollow
current_user.unfollow!(@socializable)
render json: { follow: false }
end
private
def load_socializable
@socializable =
case
when id = params[:comment_id] # Must be before :item_id, since it's nested under it.
@community.comments.find(id)
when id = params[:item_id]
@community.items.find(id)
when id = params[:user_id]
User.find(id)
when id = params[:category_id]
@community.categories.find_by_id(id)
else
raise ArgumentError, "Unsupported socializable model, params: " +
params.keys.inspect
end
raise ActiveRecord::RecordNotFound unless @socializable
end
end
对于提及,例如,您只需解析提及存在的注释,并使用代码手动创建提及。它应该相当简单。
答案 1 :(得分:5)
编辑:查看Carl的解决方案,绝对是DRYer!
查看文档,您应该能够在控制器中实现它并以您想要的任何方式进行路由,所有gem正在做的是在数据库中创建表格以供跟随和提及并在模型中关联它们。但是你可以用一个简单的方法(用户可以跟随另一个用户):
在config/routes.rb
YourApp::Application.routes.draw do
resources :users do
member do
post :follow
end
end
end
这应该会为您提供/users/:id/follow
和follow_users_path
在app/controllers/users_controller.rb
class UsersController < ApplicationController
def follow
user = User.find(params[:id])
current_user.follow!(user) # => This assumes you have a variable current_user who is authenticated
end
end
这假设在app/models/user.rb
,你有
class User < ActiveRecord::Base
acts_as_follower
acts_as_followable
end
在您看来,您可以使用方法
link_to('Follow', follow_user_path(user), method: :post) # => Assumes user is the user you want to follow
因此,如果您点击该链接,它会带您进入用户控制器中的跟进操作,并允许当前用户关注该用户
如果我可能错过任何错误或错别字,请告诉我。我不确定这是不是你想要的,但我希望这会有所帮助。