2011-05-08 65 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