2011-05-08 174 views
0

我有一個用戶模型和Job_Category模式,Job_Category模型的has_many協會軌

belongs_to :user 

用戶模型

has_many :job_categories, :dependent => :destroy 

我有一個儀表盤控制器和想顯示所有Job_Categories一個特定的登錄用戶。

class DashboardController < ApplicationController 
before_filter :authenticate_user! 


def index 
@user = User.find(params[:id]) 
@job_categories = @user.job_categories 


#@job_categories = JobCategory.all 

#respond_to do |format| 
# format.html # index.html.erb 
# format.xml { render :xml => @job_categories } 
# end 

end 

但是,當我試圖顯示這個,我得到錯誤'找不到用戶沒有ID'。我看到這在日誌中:

處理由DashboardController#指數爲HTML 用戶負載(0.3ms的)選擇 「用戶」 * FROM 「用戶」 WHERE( 「用戶」, 「ID」= 2)。LIMIT 1 。完成了22毫秒

的ActiveRecord :: RecordNotFound(無ID找不到用戶): 應用程序/控制器/ dashboard_controller.rb:9:'指數」

+2

你可以嘗試它在軌道控制檯,是否有記錄ID = 2? – loosecannon 2011-05-08 00:31:34

+0

我在數據庫中看到user.id = 2。我在控制檯中試了一下,發現了一個不同的錯誤。 >>用戶= user.find(PARAMS [:ID]) NameError:未定義局部變量或方法'PARAMS'的主要:對象 \t從(IRB):5 \t從:0 – 2011-05-08 23:03:28

+0

我能想到的唯一它是否需要在Users控制器而不是Dashboard控制器中?它應該在Dashboard控制器中工作嗎? – 2011-05-08 23:07:22

回答

1

首先,你不能試圖找到由控制檯中的參數,因爲沒有這樣的事情。

在控制檯試試這個:

User.find(2)

(..default列在哪裏找到方法看起來值爲我以爲是ID照常主鍵)

然後另一回事,如果你是已經在before_filter中對用戶進行了身份驗證,您可能已經擁有@current_user或設置了某些東西,您是否使用了諸如設計等某種身份驗證插件?所以不需要將當前用戶ID傳遞給儀表板控制器。應用程序控制器已經知道這個用戶是誰,你的儀表板控制器是它的一個子類。

並確保您的job_category表也具有user_id列。

+0

你完全正確的yoka。我正在使用設計,所以我已經有了ID集,我需要使用:@job_categories = current_user.job_categories,它的工作原理!謝謝一堆! – 2011-05-08 23:35:58