Рубин на Rails Социализация gem setup
Я просмотрел документацию мозаики, и он не объясняет подробно, как настроить gem на моих маршрутах и контроллере, чтобы иметь следующие и упоминать функции правильно функционируют.
Мне было интересно, может ли кто-нибудь показать мне, как настроить этот камень на моих маршрутах и контроллере, чтобы он работал нормально.
Внимательный ответ будет очень благодарен.
Ответы
Ответ 1
Я автор Социализации. Вот код, взятый из нашего приложения. У нас есть 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 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
Для упоминаний вам просто нужно разобрать комментарий, где упоминается, например, и вручную создать упоминание с кодом. Это должно быть довольно просто.
Ответ 2
Изменить: проверить решение Carl, определенно много DRYer!
Просмотрите документацию, вы должны быть в состоянии реализовать ее в своем контроллере и маршрутах любым способом, которым вы хотите, все, что делает камень, - это создание таблиц в вашей базе данных для последующего использования и ссылки на них в ваших моделях. Но один простой способ сделать это с последующим (пользователь может следовать за другим пользователем):
В 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
Итак, если вы нажмете эту ссылку, она должна перейти к следующему действию в пользовательском контроллере и позволить текущему пользователю следовать за пользователем.
Пожалуйста, дайте мне знать, есть ли какие-либо ошибки или опечатки, которые я, возможно, пропустил. Я не уверен, что это то, что вы ищете, но я надеюсь, что это поможет.