Я создаю приложение Rails, которое отображает гравитатор пользователя в заголовке сайта. Вспомогательный метод заключается в следующем:Получение неопределенной ошибки метода после перехода на домашнюю страницу
приложение/хелперы/users_helper.rb
# Returns the Gravatar for the given user.
def gravatar_for(user)
gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"
image_tag(gravatar_url, alt: user.name, class: "gravatar")
end
Проблема у меня в том, что, когда зарегистрированный пользователь нажимает на ссылку логотип, чтобы перейти на домашнюю страницу , Я получаю эту ошибку:
undefined method `email' for nil:NilClass
Я использую переменную экземпляра для отображения гравитатора пользователя в заголовке. Это код, который находится в меню навигации:
приложение/просмотров/макеты/_header.html.erb
<header class="site-header">
<div class="site-header-content">
<div class="site-header-content__nav">
<figure class="site-header-content__nav--logo">
<%= link_to image_tag("global/logo.png", alt: "Lemur") %>
<figcaption><%= link_to "Lemur", root_path %></figcaption>
</figure>
<input type="checkbox" id="toggle" />
<nav class="site-header-content__nav--menu">
<label for="toggle" class="toggle" data-open="" data-close="" onclick></label>
<ul>
<% if logged_in? %>
<li><%= link_to "Users", users_path %></li>
<li><%= link_to "Sign Out", logout_path, method: "delete" %></li>
<% else %>
<li><%= link_to "About", about_path %></li>
<li><%= link_to "Terms", terms_path %></li>
<li><%= link_to "Help", help_path %></li>
<li><%= link_to "Sign In", login_path %></li>
<% end %>
</ul>
</nav>
</div>
<% if current_page?(root_path) && !logged_in? %>
<div class="site-header-content__callout">
<h1>Get the word out!</h1>
<p>Write about what's happening around you, post about upcoming events and more with Lemur.</p>
<div class="site-header-content__callout--buttons">
<%= link_to "Sign Up", signup_path, class: "btn btn__lg btn__primary" %>
<%= link_to "Sign In", login_path, class: "btn btn__lg btn__primary" %>
</div>
</div>
<div class="site-header-content__down-arrow">
<a href="#home-feature__local"><%= embedded_svg "down.svg" %></a>
</div>
<% end %>
</div>
Что я здесь делаю неправильно? Я хочу, чтобы gravatar появлялся на сайте, когда пользователь все еще вошел в систему. Спасибо заранее.
Вы пытались напечатать пользователь? это ноль ..? Используете ли вы «изобретать»? – Jyothu
@Jyothu Я использую систему аутентификации Майкла Хартла. Пользователь не ноль. – jtarr523
whats ur root_path? там вы должны взять @user. – Jyothu