2016-11-09 46 views
1

正在嘗試爲我的用戶設置一個排名分數,具體取決於他們的類似計數。從頭開始在Rails上設置Like Counter

我能得到這個爲current_user.like.count工作,但由於某種原因,當我想這是對user.like.count [使其不一樣的一個爲大家]我應用程序崩潰,並給我這個錯誤消息:「未定義的方法`喜歡爲零: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 %> 
+0

user.like.count提供了一個錯誤,因爲用戶沒有設置任何東西。 User.first.like.count應該給你第一個用戶的喜歡數量。不太清楚你的意思是不是每個人都一樣。當使用設計時,Current_user將是當前登錄的用戶。你的show動作實例變量也應該是單數,因爲你只能根據參數找到一個用戶。 – user3366016

+0

非常感謝您的回答。我的意思是 - 「Current_user」只顯示當前用戶的排名並將其應用於所有其他用戶,因爲存在循環。它在我剛纔提到的index.html.erb文件中。所以我在尋找的是如何顯示每個用戶的排名。 – Omar

+0

身份證只是循環而不使用部分可能。我相當肯定你可以通過'locals:{user:user}'來使用循環中的變量,而不是控制器中的實例變量。您也可以將其更改爲使用像這樣的集合:<%= render partial:「product」,collection:@products%>'而不是循環。結帳關於它的文檔瞭解更多細節http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials – user3366016

回答