2014-11-14 88 views
1

我剛剛開始使用Rails,並且顯示的屬性只屬於登錄用戶。Ruby on Rails - 顯示已登錄用戶的帖子

我有一個用戶,崗位模型具有以下協會

class User < ActiveRecord::Base 
    has_many :posts, dependent: :destroy 
end 

class Post < ActiveRecord::Base 
    belongs_to :user 
end 

和後控制器我試圖訪問當前用戶的帖子與會話的輔助方法稱爲current_user但抱怨posts未定義

def index 
    @posts = current_user.posts 
end 

這是輔助方法

def current_user 
    remember_token = User.digest(cookies[:remember_token]) 
    @current_user ||= User.find_by(remember_token: remember_token) 
end 

有人可以擺脫它嗎?

錯誤消息
NoMethodError在PostsController#索引
未定義的方法`帖的零:NilClass

+0

可能是你的current_user是零。 – 2014-11-14 12:42:22

+0

確保您的控制器中包含了current_user輔助方法。 – 2014-11-14 12:44:50

+0

我如何確保可以在控制器中引用幫助方法? – 2014-11-14 12:45:51

回答

0

Eeeer ...是抱怨在視圖或控制器?告訴我們究竟是什麼抱怨(複製粘貼結果)。也許在您的視圖中使用@posts而不是帖子(課程帖子未定義,@posts已定義)。

3

這不是方法posts是未定義的。您的current_user對象是nil,這意味着未找到具有此remember_token的用戶。如果您不希望在current_user.try(:posts)中輸入undefined method posts for nil:NilClass,那麼如果用戶註銷,他們將不會看到該錯誤。或者在應用程序控制器中創建此方法。

application_controller.rb

private 
    def is_logged_in? 
     current_user.present? 
    end 

並調用控制器的before_filter節這個方法。

不管怎樣,爲什麼不使用devise gem來進行驗證過程。它是非常可靠的,並配備了定義開箱

1

上面說的是你的價值是CURRENT_USER的nilcurrent_userauthenticate_user!方法,以及零沒有辦法posts。 檢查您的用戶的記憶令牌,並將您輸入的參數打印到find_by

相關問題