NoMethodError в Users # show - PullRequest
       0

NoMethodError в Users # show

0 голосов
/ 13 января 2012

Каждый раз, когда я пытаюсь получить доступ к странице профиля пользователя, я получаю эту ошибку.

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'

Ниже показано, как выглядит мой файл users.controller.rb.

def show
@user = User.find(params[:id])
@microposts = @user.microposts.paginate(:page => params[:page])
@title = @user.name

Для дополнительной информации ниже приведена копия моего файла 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>

Также предоставляется мой файл users_helper.rb.

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

1 Ответ

1 голос
/ 13 января 2012

Ошибка в вашем вспомогательном методе.Пожалуйста, убедитесь, что объект @user не ноль.Затем, по вашему мнению, измените номер строки 5 следующим образом:

<%= gravatar_for(@user) %>

определите свой метод users_helper # gravatar_for следующим образом

def gravatar_for(@user)
  ..........
  @user.email
  ..........
  rerurn somthing #if you want
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...