質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.98%

  • Ruby on Rails 4

    2312questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

rails チュートリアル ’すべてのユーザーを表示する’エラーが出てしまう

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 124

Marge0101

score 8

前提・実現したいこと

ここに質問したいことを詳細に書いてください
rails チュートリアル:”9.3 すべてのユーザーを表示する”をトライしています。

発生している問題・エラーメッセージ

NoMethodError in Users#show
Showing /home/ubuntu/tutorial-j/sample_app/app/views/users/show.html.erb where line #6 raised:

undefined method ` ' for #<#<Class:0x007f0822717088>:0x007f08226395f8>

エラーメッセージ
 gravatar_id= Digest::MD5::hexdigest(user.email.downcase)
       size = options[:size]
      gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}?s=#{size}"
       image_tag(gravatar_url, alt: user.name, class: "gravatar")
  end
end

###該当のソースコード

ここに言語を入力 ここにご自身が実行したソースコードを書いてください ```
index.html.erb

<% provide(:title, 'All users') %>
<h1>All users</h1>

<ul class="users">
<% @users.each do |user| %>
<%=render user  %>
<% end %>
</ul>

users_controller.rb

def index
@users = User.all
end

users_helper.rb

module UsersHelper
def  gravatar_for(user, options = { size: 80 })
gravatar_id= Digest::MD5::hexdigest(user.email.downcase)
size = options[:size]
gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}?s=#{size}"
image_tag(gravatar_url, alt: user.name, class: "gravatar")
end
end

試したこと

課題に対してアプローチしたことを記載してください
タイピングミスかと思いそのままチュートリアルの内容をコピー&ペーストしましたが
解消されず、困っております。

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報

最近rails を勉強し始めてcloud9でチュートリアルを挑戦中です。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

ログを見る限り、showで不具合が起きてると思われます。ですのでindexではなくshowのコントローラーとshow.html.erbを見せて欲しいです。

undefined method ` ' for #<#<Class:0x007f0822717088>:0x007f08226395f8>
とログが教えてくれてるので、打ち間違いがないか確認して見てください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/19 15:53

    返答ありがとうございます。
    下記、ご確認をどうぞよろしくお願いいたします。

    show.html.erb
    <%= provide(:title,@user.name)%>
    <div class="row">
    <aside class="col-md-4">
    <section class="user_info">
    <h1>
    <%=gravatar_for@user%>
    <%=@user.name%>
    </h1>
    </section>
    </aside>
    </div>

    users_controller.rb

    def show
    @user= User.find(params[:id])
    end

    キャンセル

  • 2017/09/19 15:59 編集

    6行目を<%=gravatar_for(@user)%>

    に変更して再度試して見てください。

    キャンセル

  • 2017/09/19 17:24

    ご回答ありがとうございます。

    2点確認したい事があります。

    <質問1>
    6行目を<%=gravatar_for(@user)%>と変更したら、
    show.html.erは無事に表示されましたが、登録されているユーザーデータはでてきません。どうすれば よいでしょうか。

    <質問2>
    ..c9users.io/users/1
    今度は↑の箇所でエラーが発生してしまいました。
    (変更前までは表示できていたのですが…)
    <エラー内容>
    NoMethodError in Users#show
    Showing /home/ubuntu/tutorial-j/sample_app/app/views/users/show.html.erb where line #6 raised:

    undefined method ` ' for #<#<Class:0x000000045da5d0>:0x000000050aae60>

    size = options[:size]
    gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}?s=#{size}"
    image_tag(gravatar_url, alt: user.name, class: "gravatar")
    end
    end

    どうぞよろしくお願いいたします。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.98%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Railsで動的にメール一斉送信

    管理者のみがアクセスできるページにフォームを作り、そこにsubject(件名)とbody(本文)を入力したら登録ユーザー全員にメールを送るという機能を実装したいと思っています。

  • 解決済

    他モデルshowページへ飛ぶ際の条件分岐は??

    前提・実現したいこと 他モデルへのshowページへ飛べるように条件分岐をしたいです。 例えば、あるユーザーがUserとしてログインしていたとします。 そこから、Shopユ

  • 解決済

    プルダウンの項目に2つの値を投入したい。

     やりたいこと プルダウンで選べる項目の表示を、 現状 : ユーザ名 改善後 : ユーザ名[メールアドレス] といった表示に変えたい。  問題 現在、一旦やりたい

  • 解決済

    Devise内でomniauthのtwitter認証が完了してもレコードが格納されない

    前提・実現したいこと ///0222追記 すみません!そもそも「実現したい事」を書くのを忘れていました! エラーは後述の通り「Twitter認証後データがテーブルに格納されな

  • 解決済

    【Rails】acts_as_taggableを用いたタグリンクの作成

    はじめましてRailsの勉強を始めて2ヶ月の学生です。 現在掲示板を作っており、acts_as_taggableを用いてtag機能を実装しようとしています。 タグをテキ

  • 受付中

    Ruby on Rails : undefined method `user' for #<Use...

    やりたいこと ユーザーがlikeした、questionを全て取り出し、表示したいのですが、うまく行きません。

  • 解決済

    RailsでAjaxをちゃんと動かしたい

    Railsでrailsとjsを使ったお手軽「いいね♡機能」をみながら、「いいね♡機能」を実装しているのですが、[いいね!ボタン]を押したあとにリロードしなければ画面が変化しません。

  • 受付中

    railsにてNoMethodErrorエラー

    前提・実現したいこと デフォルトの画像設定が上手くいきません。 Progateで学習した内容をcloud9を使って復習しているのですが標題のエラーで詰まっています。 過去の質問

同じタグがついた質問を見る

  • Ruby on Rails 4

    2312questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。