2012-11-22 29 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

相关问题