現在ruby on railsのgem「devise」でユーザー詳細ページを作成しています。プロフィール画像をデフォルトでgravatarから引っ張ってくるところで、エラーが出てしまいました。
エラー内容
NoMethodError in Users#show undefined method `profile_photo' for #<User:0x00007fcf4d421818>
エラー箇所
module ApplicationHelper def avatar_url(user) **return user.profile_photo unless user.profile_photo.nil?** gravatar_id = Digest::MD5::hexdigest(user.email).downcase "https://www.gravatar.com/avatar/#{gravatar_id}.jpg" end
ヘルパー(gravatar定義)
module ApplicationHelper def avatar_url(user) return user.profile_photo unless user.profile_photo.nil? gravatar_id = Digest::MD5::hexdigest(user.email).downcase "https://www.gravatar.com/avatar/#{gravatar_id}.jpg" end end
ビュー
<div class="profile-wrap"> <div class="row"> <div class="col-md-4 text-center"> <%= image_tag avatar_url(@user), class: "round-img" %> </div> <div class="col-md-8"> <div class="row"> <h1><%= @user.name %></h1> <%= link_to "プロフィールを編集", edit_user_registration_path, class: "btn btn-outline-dark common-btn edit-profile-btn" %> <button type="button" class="setting" data-toggle="modal" data-target="#exampleModal"></button> <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">設定</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="list-group text-center"> <%= link_to "サインアウト", destroy_user_session_path, method: :delete, class: "list-group-item list-group-item-action" %> <%= link_to "キャンセル", "#", class: "list-group-item list-group-item-action", "data-dismiss": "modal" %> </div> </div> </div> </div> </div> <% if @user == current_user %> <div class="row"> <p> <%= @user.email %> </p> </div> <% end %> </div> </div> </div>
コントローラー
class UsersController < ApplicationController def show @user = User.find_by(id: params[:id]) end end
私が確認した限りでは、スペルミスはないと思われます。ご教授いただければ幸いです。
回答2件
あなたの回答
tips
プレビュー