отписаться пользователя не проснулся: действует как жемчужина последователя - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь разрешить пользователю подписаться на пользователя или отменить подписку через действия в качестве подписчика.Это мой просмотр:

     <tbody>
                      <% @runs.each do |run| %>
                          <td><%= run.user.try(:username) %><p> 
                            <% if current_user.following?(@user) %> 
                            <%= link_to "Unfollow", unfollow_user_path(@user.username), method: :delete %></p>
                            <% else %>  
                            <%= link_to "Follow", follow_user_path(@user.username), method: :post %> </td> 
                            <% end %>
                          <td><%= run.Run_Type %></td>
                          <td><%= run.Location %></td>
                          <td><%= run.Start_Time %></td>
                          <td><%= run.Pace %></td>
                          <td><%= run.Miles %></td>
                          <td><%= run.Run_Date %></td>
                          <td><%= link_to 'Show', run %></td>
                          <% if run.user == current_user %>
                          <td><%= link_to 'Edit', edit_run_path(run) %></td> 
                          <td><%= link_to 'Destroy', run, method: :delete, data: { confirm: 'Are you sure?' } %></td>
                           <% end %>
                        </tr>
                      <% end %>
                    </tbody>
                  </table>

и мои маршруты:

  resources :users, only: :show, param: :username do
member do
  post 'follow', to: 'follows#create'
  delete 'unfollow', to: 'follows#destroy'
end

end

и мой контроллер:

   class FollowsController < ApplicationController
  before_action :authenticate_user!

  def create
    user = User.find_by(username: params[:username])
    Follow.create(followable: user, follower: current_user)
    redirect_to user_path(user.username), notice: "Successfully followed user"
  end

  def destroy
    user = User.find_by(username: params[:username])
    Follow.find_by(followable: user, follower: current_user).destroy
    redirect_to user_path(user.username), notice: "Successfully unfollowed user"
  end
end

наконец-то моймодель:

   class Follow < ApplicationRecord

  extend ActsAsFollower::FollowerLib
  extend ActsAsFollower::FollowScopes

  # NOTE: Follows belong to the "followable" and "follower" interface
  belongs_to :followable, :polymorphic => true
  belongs_to :follower,   :polymorphic => true

  def block!
    self.update_attribute(:blocked, true)
  end

end

Когда нажата кнопка «Подписаться на пользователя», пользователь получает уведомление «успешно подписаться на пользователя», но ожидаемое действие должно заключаться в том, что эта ссылка затем скажет «отписаться от пользователя», однако это небывает.

enter image description here

[1]: https://i.stack.imgur.com/Lnirg.png

1 Ответ

0 голосов
/ 16 февраля 2019

Actyas_follower rubygems версия 0.2.1 устарела, начиная с 2013 года. Вам нужно изменить строку gemfile с:

gem 'acts_as_follower'

на

gem 'acts_as_follower', github: 'tcocca/acts_as_follower', branch: 'master'

Или вы можете просто принять мойPR здесь: https://github.com/westche/sample_app/pull/1

...