1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails】🔰初学者:Railsでよく出るエラーとその対処法まとめ

Posted at

【Rails】🔰初学者:Railsでよく出るエラーとその対処法まとめ

Railsを触っていると必ず出会う「エラー」。
最初は怖いですが、ちゃんと読む習慣をつけるようにし、少しだけ自力で解決できるようになってきました。
ホントに「少しだけ」ではありますが・・・:sweat_smile:

今回は、僕自身がRailsを学んでいる中でよく出会ったエラーとその意味、そして対処法を整理してみました。

✅ 主なエラーとその意味

エラー名 内容
SyntaxError Rubyの文法ミス unexpected keyword_end(endの数ミス)
NameError 定義してない変数やメソッドを使った undefined local variable or method 'post'
NoMethodError 存在しないメソッドを呼び出した undefined method 'title' for nil:NilClass
RoutingError 存在しないルートにアクセスした No route matches [GET] "/posts/123"
ActiveRecord::RecordNotFound 指定IDのレコードが見つからない Couldn't find Post with 'id'=999
ActionController::ParameterMissing パラメータが送られてない param is missing or the value is empty: post
ActiveModel::ForbiddenAttributesError Strong Parametersで許可されていない属性を保存しようとした Unpermitted parameter: :title
Missing Template 該当するviewファイルがない Missing template posts/show

✅ エラーが出たらまずやること!

1. エラーメッセージ全文をちゃんと読む

エラーの種類(例:NoMethodError)

どこのファイルで、何行目で出たか

for nil:NilClass のような詳細

2. スタックトレース(バックトレース)を見る

上:呼び出し元

下:実際のエラー箇所

app/controllers/posts_controller.rb:10:in `show'

🔍 よくあるエラーと対処法(具体例)

🔸SyntaxError

SyntaxError: unexpected keyword_end, expecting end-of-input

✅ 対策:
end の数や順序をチェック

エディタの構文チェック機能に頼る

🔸NameError

NameError: undefined local variable or method `post`

✅ 対策:
変数やメソッドが定義済みか

スペルミス or @ のつけ忘れに注意

🔸NoMethodError

NoMethodError: undefined method `title' for nil:NilClass

✅ 対策:
nil に対してメソッドを呼び出していないか

.findで失敗したらnilになるか例外になるので rescue が有効

🔸RoutingError

No route matches [GET] "/posts/123/edit"

✅ 対策:
rails routes で定義確認

HTTPメソッドやパスを見直す

🔸ActiveRecord::RecordNotFound

ActiveRecord::RecordNotFound: Couldn't find Post with 'id'=999

✅ 対策:
.find(params[:id]) が見つからないと例外

rescue でフォールバック処理

🔸ActionController::ParameterMissing

param is missing or the value is empty: post

✅ 対策:
フォームのname属性や構造をチェック

params.inspectで中身を確認

🔸ForbiddenAttributesError

✅ 対策:
Strong Parameters を正しく書く!

def post_params
  params.require(:post).permit(:title, :body)
end

🔸Missing Template

Missing template posts/show

✅ 対策:
該当する .html.erb があるか

render の記述ミスに注意

📝 まとめ

エラーは嫌な存在に思えますが、
実は「コードを正しく書くための先生」みたいなもの。
特にエラーが解消されてきれいに実行できた時は脳汁がでます。

まずは落ち着いてエラーを読むことから始めてるように心がけていきます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?