2012-11-22 71 views
0

所以昨天我問了一個關於獲取當前用戶項目的問題。那麼我遇到了一個問題。 See that thread here.所以今天我一直在爲任何討論顯示用戶的類別和任務。當我裝了頁面查看此我:undefined projects

NoMethodError in UsersController#show 

undefined method `projects' for #<User:0xad5823f4> 
Rails.root: /home/adam/Documents/Aptana Studio 3 Workspace/StartPoint 

Application Trace | Framework Trace | Full Trace 
app/controllers/users_controller.rb:25:in `show' 
Request 

Parameters: 

{"id"=>"4"} 

這是目前什麼在我的用戶#顯示方法:

def show 
    @projects = current_user.projects 
    @tasks = current_user.tasks 
    @categories = current_user.categories 
    @discussions = current_user.discussions 
    end 

表名是項目,任務,分類和討論。我沒有問題在任何地方使用這個,所以我爲什麼看到這個錯誤?

如果你需要更多的代碼我可以顯示它。該錯誤是相當清楚的,但我再次使用這種類型的調用,否則顯示項目特定信息,如項目類別或任務。它可能是我與用戶和類別,討論,任務等之間的關係的東西?因爲我在show方法中列出的每個表中都有user_id,等等。

另外我想到了這一點,今天早上,因爲這個主題:current_user似乎是錯誤的,因爲如果我點擊鮑勃配置文件,我會看到我所有的東西沒有?它應該不是更具體的用戶ID?

+0

你可以發佈你的'項目'模型?至少第一行 – MrYoshiji

+0

請'用戶'。 –

+1

請一次只問一個問題。提出多個問題會導致一系列非常混亂的評論和答案,從而使整個問題非常無法使用。 –

回答

0

您是否在每個模型中建立了關聯?

class User < ActiveRecord::Base 
    has_many :projects 
end 

另外要確保current_user實際上是一個用戶對象,而不是有些單薄代理。

通常您需要區分會話用戶和顯示的用戶。這就是爲什麼像current_user這樣的名字是有害的。我建議使用session_user來引用登錄的用戶和@user來引用正在顯示的用戶。

某些登錄系統只定義了一個current_user方法,但是爲了別名,這並不難。在這種情況下,這只是設計上的缺陷。

+0

那麼有沒有例子顯示一些elses配置文件,而不是我的? – TheWebs

+0

用'@ user'替換'current_user'並確保實例變量被預先分配。 – tadman

相關問題