2

我是 Rails 和 Ruby 的新手,实际上它是我的第一个 Web 语言。这不是我的第一个项目,但它是迄今为止最大的项目,我在某个页面(“主页”页面)上遇到了问题。

错误是:

NoMethodError in Home#index undefined method `avatar' for nil:NilClass

提取的源代码(在第 1 行附近):

1: <%= image_tag current_user.avatar.url(:thumb) %>
2: <ul>
3:   <li><b>Name:</b><%= current_user.name %></li>
4:   <li><b>Username:</b><%= current_user.username %></li>

所以它不喜欢我的属性:(在这种情况下我该怎么办?我应该先看哪里?这是控制器问题吗?

4

2 回答 2

3

问题是current_user正在返回nil

看看错误

NoMethodError in Home#index undefined method `avatar' for nil:NilClass

Ruby 表示您正在尝试avatarnil对象上执行实例方法。查看您的代码后,您应该能够知道您正在调用avatar的返回值,current_user因此您可以推断返回的current_user是返回值nil而不是用户。

根据评论:

要解决此问题,您需要首先确定是否存在current_user. 然后,只有这样,您才尝试显示用户avatar或用户的其他属性(nameusername...)

有些人不喜欢逻辑中的观点,我倾向于遵循这种做法。

为避免这种情况,您可以: 创建一个包含逻辑的视图助手。这个助手可能会也可能不会显示/返回有关用户的数据。

类似的东西if current_user ...

于 2012-09-20T14:42:55.160 回答
1

您正在尝试获取“current_user”的头像。系统正在抱怨,因为它不知道 current_user 是谁或什么。

您的 current_user 对象为零。导致问题的代码(可能来自您的应用程序或会话助手)您正在设置 current_user... 最有可能您会找到问题的根源。

于 2012-09-20T14:49:41.987 回答