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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1960閲覧

Rails NoMethodErrorで困っています(eachメソッドでデータを取得したい!)

rione

総合スコア1

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/10/30 23:11

編集2020/10/31 04:21

dbに記述したデモデータを取得&反映するためにNoMethodErrorを解決したいです!
dbのソースコードを記述し、ターミナルにて該当ディレクトリ(blog-app-hirochan)で

$rails db:seed

を実行済みです。

▼起きている問題(起きている現象の詳細/エラーメッセージ/スクリーンショット)
スクショを貼っています。

▼ソースコード、ログ
https://github.com/hirooutdoor/blog-app-hirochan/tree/show-articles
イメージ説明
▼問題解決するために試したこと
'each' for nil:Nilclassとなっていたので、@articlesがちゃんと定義できていないと疑いました。

▼以下試したこと、問題について考えたこと(デバッグ結果)
①該当箇所のあるapp/views/index.html.erbの記述が間違いなさそうなことを確認

<div class="container"> <div class="tabs"> <div class="tabs_item active"> 新着記事一覧 </div> <div class="tabs_item"> タイムライン </div> </div> <% @articles.each do |article| %> <div class="card"> <div class="card_image"> <%= image_tag 'eyecatch1.png' %> </div> <div class="card_content"> <div class="card_title"> <%= article.title %> </div> <div class="card_heart"> <%= image_tag 'heart.svg' %> <span>23</span> </div> <div class="card_detail"> <%= image_tag 'default-avatar.png' %> <div> <p>cohki0305</p> <p>2020/4/16</p> </div> </div> </div> </div> <% end %> </div>

②app/controllers/articles_controller.rbで定義できていることを確認

class ArticlesController < ApplicationController def index @articles = Article.all end end

③app/db/seeds.rbでデモ通りに記述できているのを確認

Article.create({title: 'ビジョニングの力1', content: '成功者のほぼ全ての人は、ビジョニングを行っている。脳は実際に起きたことと、想像したことを見分けることができない。この力を使ってとにかく自分が成功するイメージを掴むんだ。'}) Article.create({title: 'ビジョニングの力2', content: '偉人の写真を壁一面に貼ることだ。自分がその人物に近づいているかどうか、日々確認できる。'})

④app/model/article.rbのファイルに間違いがないのを確認

class Article < ApplicationRecord end

'each' for nil:Nilclassとなっていたので、@articlesがちゃんと定義できていないと疑いましたが、定義できているようで何が問題なのかさっぱりです。ご教授いただけると幸いです><!!

-追記-
rails consoleを使ってseedのデータがmodelで生成できていることを確認しました。
イメージ説明

利用環境
Rails 6.0.3.4
VScode 1.49.2

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2020/10/30 23:49

問題解決のためのアプローチはそれでよいと思います。 見た目ではcodeに問題なさそうなので ??? です。 1) seedが失敗していても、@articles = [] になるだけで、Nilにはならないので、ここは関係ないです。  @articles = Article.all が失敗している?? ここで止めて @articlesを確認してみていただけますか
rione

2020/10/31 01:56

やってみましたが変わりませんでした。変数名を変えてみても同様の結果でした...
guest

回答1

0

ベストアンサー

質問者さんのリポジトリをcloneしてshow-articlesのブランチを実行してみました。
問題なく表示することができました。
もしかしたら rails db:seed がうまく行っていないのかもしれません。
データベースの中身を確認してみてください。

$ sqlite3

sqlite> .open db/development.sqlite3 sqlite> select * from articles; 1|ビジョニングの力1|成功者のほぼ全ての人は、ビジョニングを行っている。脳は実際に起きたことと、想像したことを見分けることができない。この力を使ってとにかく自分が成功するイメージを掴むんだ。|2020-10-31 00:12:52.379845|2020-10-31 00:12:52.379845 2|ビジョニングの力2|偉人の写真を壁一面に貼ることだ。自分がその人物に近づいているかどうか、日々確認できる。|2020-10-31 00:12:52.384367|2020-10-31 00:12:52.384367

うまく行っていれば上記のようにdb:seedの内容が表示されるはずです

投稿2020/10/31 00:33

issei126

総合スコア108

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rione

2020/10/31 01:54 編集

ご回答ありがとうございます。 $ sqlite3 を実行してみたらデータベースの中身が表示されませんでした。ということは rails db:seedがうまく行ってないということなのですね...! sqlite> .open db/development.sqlite3 sqlite> select * from articles ...> で止まっています。 どのように解決すればよろしいでしょうか><?
rione

2020/10/31 02:25

$ rails db:migrate:resetからの $ rails db:seedをしてみて 再度上記を実行し、control + DでSQLiteを終了したら出てきました! しかし、それをした上でブラウザをリロードしても反映されないみたいです>< sqlite> .open db/development.sqlite3 sqlite> select * from articles ...> ^D 1|ビジョニングの力1|成功者のほぼ全ての人は、ビジョニングを行っている。脳は実際に起きたことと、想像したことを見分けることができない。この力を使ってとにかく自分が成功するイメージを掴むんだ。|2020-10-31 02:20:24.068270|2020-10-31 02:20:24.068270 2|ビジョニングの力2|偉人の写真を壁一面に貼ることだ。自分がその人物に近づいているかどうか、日々確認できる。|2020-10-31 02:20:24.074440|2020-10-31 02:20:24.074440
rione

2020/10/31 04:42

rails serverを再起動して、再度エラーになったときの操作をしたらできました!
rione

2020/10/31 04:43

ありがとうございました^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問