次のような 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?
が、それもうまくいきませんでした。これは簡単な修正だと思いますが、わかりません!
EDITは提案された修正を追加し(上記のヘッダーの部分で更新されました)、次のエラーが発生しました:
No route matches {:action=>"edit", :controller=>"users"}
から来ているようですedit_user_path