【Rails初心者】ハマりがちなエラーまとめ!解消法もあわせて紹介【必見】

rails-logo

こんにちは。たなか(@tanaka_ricecake)です。

Rails tutorialを進行中です。

作業中に躓いたエラー内容が溜まってきたのでまとめました。

ActiveRecord::PendingMigrationError

 

Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=development

Railsさんは以下のように仰っています。

 

まだ保留中のmigrationファイルがあるんじゃない?
bin/rails db:migrate を走らせた方が良いよ

 

rails g modelなどでマイグレーションファイルが増えたものの、DBに反映されてないことが考えられるので、アドバイス通りdb:migrateを実行してみましょう。

 

Unknown action

 

そんなアクション知らないよ

 

routes.rbを設定したものの、対応するアクションがcontrollerに書かれていない場合などに表示されるエラーです。

実施したいアクションが、コントローラーに記述されているか、そこにタイポがないかを確認してみましょう。

 

Template is missing

 

テンプレートが見つからないよ

route、controllerまで疎通したけど、対応するテンプレート(ビュー)がないってエラーですね。

 

例えば一覧ページをみたくてindexアクションを通過している場合は、該当のディレクトリにindex.html.erbがあるか、またタイポはないかを確認してみましょう。

 

こういったエラーの場合は逆に、「ルーティング、コントローラーまでには疎通してるから、あとはビューだけだな」みたいな確認にも使えたりしますね。

 

SyntaxError

 

書き方がおかしいよ

 

シンプルに構文エラーです。どこか書き方を間違えています。

大抵ログでどこがおかしいか教えてくれるので、「xxx_controller.rbのxx行目ね」みたいに該当箇所を修正してやればOKです。

 

NoMethodError in 〜

 

定義されていないメソッドだよ

 

定義されていないメソッドが呼び出されたときに表示されます。

例えば

undefined method `title' for nil:NilClass 

こんな風に怒られている場合、@hoge.title のような形で呼び出そうとしているけど、titleなんて言われてもわからないよ、といった旨のエラーになります。

 

@hogeがnilになっている、titleなんてものがどこにも定義されていない、その辺りでタイポしているなどが原因として考えられます。

 

まずはbyebugなどで@hogeについて調べてみるなどしましょう。

このページは動作していません

動作していません

railsサーバー起動した? or  指定ポートに繋いでる?

rails sでサーバーを起動しましょう。

サーバーを起動してなおこの症状という方は、指定している接続先が異なる可能性があります。

localhost:〇〇 ← ここのポート番号を確認するなどすると解決の近道です。

 

railsのエラーというわけではありませんが、初学者一度はやるのではないでしょうか。

まとめ

rails-logo

 

今回はRuby on Rails初学者が一度は見ることになるであろうエラーをまとめて紹介しました。

Railsチュートリアルではbyebugなどのデバッガー操作についてサポートが手薄な印象です。

プロのデバッグについて、方法をもっと知りたいなーと思いました。

 

紹介したような症状でお悩みの方の参考になれば幸いです。

 

コメントを残す

メールアドレスが公開されることはありません。