Ruby on rails 3 用户中的命名错误#显示
每次我尝试访问用户配置文件页面时,都会出现此错误Ruby on rails 3 用户中的命名错误#显示,ruby-on-rails-3,Ruby On Rails 3,每次我尝试访问用户配置文件页面时,都会出现此错误 ActionView::Template::Error (undefined method `email' for nil:NilClass): 2: <tr> 3: <td class="main"> 4: <h1> 5: <%= gravatar_for @user %> 6: <%= @user.name %> 7:
ActionView::Template::Error (undefined method `email' for nil:NilClass):
2: <tr>
3: <td class="main">
4: <h1>
5: <%= gravatar_for @user %>
6: <%= @user.name %>
7: </h1>
8: </td>
app/helpers/users_helper.rb:4:in `gravatar_for'
app/views/users/show.html.erb:5:in `_app_views_users_show_html_erb__222181804_33777120'
以下是我的show.html.erb文件的副本,以供参考
<table class="profile" summary="Profile information">
<tr>
<td class="main">
<h1>
<%= gravatar_for @user %>
<%= @user.name %>
</h1>
</td>
<td class="sidebar round">
<strong>Name</strong> <%= @user.name %><br />
<strong>URL</strong> <%= link_to user_path(@user), @user %>
</td>
</tr>
</table>
错误在您的助手方法中。请验证@user对象不是nil。 然后在您的视图中,按如下方式更改行号5:
<%= gravatar_for(@user) %>
显然,您的
@user
是nil
。Dave,有一个用户。我尝试创建一个新用户,但仍然出现相同的错误。有什么办法可以解决这个问题吗?你确定用户正在被传递到视图吗?Paul,我如何检查它?尝试从中打印/渲染一些内容。或者在出现错误之前查看您的控制器或模板。我进行了您建议的编辑@sannankhalid,现在看来我在这行代码的最后一个括号中出现了语法错误,def gravatar_for(@user)。知道我为什么会这样做吗?删除“@”符号,使这行代码变成def gravatar_for(user)并在方法中使用“user”而不是“@user”
module UsersHelper
def gravatar_for(user, options = { :size => 50 })
gravatar_image_tag(user.email.downcase, :alt => h(user.name),
:class => 'gravatar',
:gravatar => options)
end
end
<%= gravatar_for(@user) %>
def gravatar_for(@user)
..........
@user.email
..........
rerurn somthing #if you want
end