我有一个部分链接到我的 application.html.erb 的标题,如下所示:
<header class="unselectable">
<h2 class="float_left">
<% if @user.try(:errors).present? %>
<%= render 'shared/error_messages' %>
<% else %>
<%= @title %>
<% end %>
</h2>
<nav class="round">
<ul>
<% if logged_in? %>
<li><%= link_to "Home", current_user %></li>
<li><%= link_to "Settings", edit_user_path %></li>
<li><%= link_to "Log out", logout_path %></li>
<% else %>
<li><%= link_to "Log in", login_path %></li>
<% end %>
</ul>
</nav>
</header>
这一切都很好,除非加载的页面没有 @user 变量(例如 about 或 logout 页面),在这种情况下我得到这个:
undefined method `errors' for nil:NilClass
我怎样才能使这项工作?我尝试更改逻辑以呈现标题unless
@user.errors.any?
,但这也不起作用。我确定这是一个简单的修复,但我无法弄清楚!
编辑添加了建议的修复(在上面的部分标题中更新),现在得到这个错误:
No route matches {:action=>"edit", :controller=>"users"}
这似乎来自edit_user_path