私はMichaelHartlによるRailsチュートリアルに従っています。実際にはすでに終了していますが、最終章の最後の演習で行ったリファクタリングで問題が発生しています。私がしたのは、ユーザーモデル(show.html.erb)の表示ビューを次のように変更することだけでした。
<section>
<h1>
<%= gravatar_for @user %>
<%= @user.name %>
</h1>
</section>
これに:
<section>
<%= render 'shared/user_info' %>
</section>
そしてpartial(_user_info.html.erb)に私はこれを持っています:
<a href="<%= user_path(current_user) %>">
<%= gravatar_for current_user, size: 52 %>
</a>
<h1> <%= current_user.name %> </h1>
<% unless current_page?(user_path(current_user)) %>
<span> <%= link_to "view my profile", current_user %> </span>
<span> <%= pluralize(current_user.microposts.count, "micropost") %> </span>
<% end %>
ブラウザではすべて正常に動作しますが、何らかの理由でrspecが一部のテストに失敗しているため、sessions_helper.rbで定義されているcurrent_userメソッドの呼び出しに問題があると思われます。これはapplication_helper.rbに含まれています。gravatar_for関数はusers_helper.rbで定義されています。これが私がテストから得たエラーです:
失敗/エラー:前{visit user_path(user)} ActionView :: Template :: Error:undefined method gravatar_for'#./app/views/shared/_user_info.html.erb:1: email' for nil:NilClass
# ./app/helpers/users_helper.rb:4:in
in _app_views_users_show_html_erb___ _app_views_shared__user_info_html_erb___3480157814439046731_47327400'
# ./app/views/users/show.html.erb:5:in
1252254778347368838_47378900'#./spec/requests /user_pages_spec.rb:58:in `ブロック(3レベル)in'
ここで何が起こっているのかを特定するのを手伝っていただければ幸いです。同じことをするためのさまざまな方法を見つけることができましたが、私はこれについて非常に興味があります。私はRailsの経験があまりないので、チュートリアルに従ったので、明らかな何かが欠けている場合はご容赦ください。ありがとう。