2015-08-15 114 views
0

我得到錯誤,當我退出:的Rails充當可投票檢查,如果用戶登錄到投票

undefined method `voted_for?' for nil:NilClass 

這是我的看法:

- unless (current_user.voted_for? @project) && (@project.liked_by current_user) 
    = link_to like_project_path(@project), method: :put, class: "btn btn-default" do 
    %span.glyphicon.glyphicon-heart 
     = pluralize(@project.get_likes.size, 'like') 
- else 
    = link_to unvote_project_path(@project), method: :put, class: "btn btn-default" do 
    %span.glyphicon.glyphicon-heart 
     = pluralize(@project.get_likes.size, 'like') 

如果我刪除current_user.voted_for? @project和然後由於某種原因離開@project.liked_by current_user,當我刷新頁面時,它會自動喜歡該項目。即使我清除了數據庫,當我進入該項目時,它也會添加一個。

因此,當我嘗試註銷時,出現該錯誤,但是當我登錄時,沒有錯誤,它似乎正常工作。

回答

1

current_user沒有在您的視圖中定義,它在控制器中定義。你應該把所有的邏輯控制器

在你的控制器:

@instance_variable = (current_user.voted_for? @project) && (@project.liked_by current_user) 

然後在您的視圖:

unless @instance_variable 
+0

哦有趣。好的,這是有效的。謝謝 – hellomello

0

這很奇怪,但我不知道你正在使用的特定寶石。也許你還應該檢查current_user是不是nil

喜歡的東西:if current_user && current_user.voted_for?(@project) ...

邊注:在風格上,它是最好避免unless ... else,因爲它難以閱讀。