从头开始在Rails上设置一个类似的计数器

时间:2016-11-09 00:10:33

标签: ruby-on-rails ruby

正在尝试为我的用户设置排名分数,具体取决于他们的数量。

我能够将此功能用于 current_user.like.count ,但出于某种原因,我希望它适用于 user.like.count [以便它不是每个人都一样]我的应用程序崩溃并给我这个错误消息:“未定义的方法`喜欢'为nil:NilClass”我已经把我所有的相关代码放在下面以及我的github为此。任何帮助都会很棒。

Github网址:https://github.com/OmarZV/TY2

_rankings.html.erb

<% if current_user.likes.count >3 %>
A Ranking
<% elsif %>
<% current_user.likes.count == 2%>
B Ranking
<% else %>
C Ranking
<% end %>

users_controller.rb

class UsersController < ApplicationController
  before_action :authenticate_user!

  def index
    @users = User.all
  end

  def show
    @users = User.find(params[:id])
  end
end

的routes.rb

Rails.application.routes.draw do
  devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
  resources :users, :controllers => "users_controller.rb"
  resources :users do
    resource :ranking, module: :users
  end
  resources :posts do
    resource :like, module: :posts
  end
  root to: "posts#index"
end

Index.html.erb

<h1 class="page-header">Platform Users</h1>
<% @users.each do |user| %>
<strong><%=  user.username %></strong>
<div class="round-image-50"><%= image_tag(user.avatar.url(:thumb)) %></div>
div id="user_<%= @user_id%>_rankings">
<%= render partial: "rankings", locals: {user: @user} %>
</div>
<% end %>

1 个答案:

答案 0 :(得分:0)

移动评论以回答。

我只是循环而不是使用部分可能。但我非常确定你可以通过locals: {user: user}来使用循环中的变量而不是控制器中的实例变量。查看文档上的文档以获取更多详细信息http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials