Rails| Ruby on Rails5道場コースⅣ|9/14でドハマリした話
考えながらとは言え、ノートを首っ引き状態でそこまで躓かない道場コースです。
(書き写しのミスでエラーとかはある🐫テヘペロ)
そんな中、なかなかのドハマリを致しましたので書いておきます
解決してみれば簡単な事ですが、ハマってる時はなかなか気づかないモノですね……
9/14 いいね!ボタンを作ろう でハマる
ハマったのはこちら。
Rails道場コースⅣの9/14での事でした
前項で作ったlikes_contorollerに
createとdestroy、2つのアクションの中身を作るやつです
指示に従いつつ、ノートを見返しつつ
正直そんなに難しい印象もなく作業してブラウザタブをクリック
うむ。エラーです。
潰せたエラーと潰せないエラー
始め出ていたのはコード中のスペルミスとか閉じ忘れとか
見慣れてきた感があるのでエラー文を見ながらどこが間違えてるのか探せました
そしてハマったのがこちら
Routing Error
undefined method `before_action’ for main:Object
Rails.root: /home/progate/tweet_app
Application Trace | Framework Trace | Full Trace
app/controllers/likes_controller.rb:2:in `
グーグル翻訳に突っ込みます
main:Objectに対する未定義のメソッド `before_action ‘
before_action :authenticate_userのスペルをチェックしてみたり
リセットしてやり直してみたり
サイトごと再読み込みしてやり直してみたり(それで行けることもある)
9/14で触った所をくまなく見直してみたのだけど分からず
もう一度エラー文を見直して見る
likes_controller.rb:2:in
likes_contorollerの2行目……
今回の私のコード
before_action :authenticate_user
def create
@like = Like.new(
user_id: @current_user.id,
(後略)
学習コースをやりながら作ったローカルのコード
class LikesController < ApplicationController
before_action :authenticate_user
def create
@like = Like.new(
user_id: @current_user.id,
(後略)
end
ApplicationControllerが継承されていないね!
原因
原因はホント単純かつ基本的な事なんですが
前項(8/14)でlikes_controllerを作った時に
ターミナルでコマンドを打ち込むのではなく
viewファイルと同じくフォルダで右クリックで作っちゃっていたせいでした
その時からクラスの継承のコードはなかったのだけど
動作確認がなかったせいもあってエラーにならずチェックを通っちゃってたみたいです
結論
エラーを探すときはエラー文をよく読もう(声を大にして言う程の事でも……💧)
基本中の基本動作と思うので、身に付くまでモニタに付箋とか貼っておきたい