前提・実現したいこと
ここに質問の内容を詳しく書いてください。
現在railsの学習のためインスタグラムに近いサイトを作成中なのですが、その過程でnameerrorが出てしまい。
解決できなかったので質問させていただきました。
発生している問題・エラーメッセージ
NameError (uninitialized constant User::FavoritePost): app/models/user.rb:44:in `favorite_post' app/controllers/favorite_posts_controller.rb:4:in `create'
該当のソースコード
app/models/user.rbの中身
has_many :favorite_posts, dependent: :destroy has_many :favoriteposts, through: :favorite_posts, source: :user def favorite_post(micropost) ※ここが44行目 favoriteposts << micropost end def unfavorite_post(micropost) favorite_posts.find_by(id: :micropost.id).destroy end def favorite?(micropost) self.microposts.include?(micropost) end
app/controllers/favorite_posts_controllerの中身
class FavoritePostsController < ApplicationController def create micropost = Micropost.find(params[:micropost_id]) current_user.favorite_post(micropost)※ここが4行目 flash[:success]="お気に入りに登録しました" redirect_to micropost end def destroy micropost = Micropost.find(params[:id]) current_user.unfavorite_post(micropost) redirect_to micropost end end
app/models/favoritepost.rbの中身
class FavoritePost < ApplicationRecord belongs_to :user, class_name: "User" belongs_to :micropost, class_name: "Micropost" validates :user_id, presence: true validates :microposts_id, presence: true end
試したこと
過去にteratailへ投稿された質問をいくつか調べた結果、nameerrorが出る=正しいクラスの読み込みが出来ていなく、ファイルの名前が間違っている可能性が高い、との回答があったので、ファイルやクラス名を確認したのですが、特に間違っているようには見受けられず、ファイルもクラス名も同じでした。
何か別の部分に原因があるのか? と考えたのですが、糸口がなかなか掴めず、詰まってしまいました。
ご助力お願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/17 11:10