Рубин на 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

Итак, если вы нажмете эту ссылку, она должна перейти к следующему действию в пользовательском контроллере и позволить текущему пользователю следовать за пользователем.

Пожалуйста, дайте мне знать, есть ли какие-либо ошибки или опечатки, которые я, возможно, пропустил. Я не уверен, что это то, что вы ищете, но я надеюсь, что это поможет.