Milky_English
@Milky_English

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【Rails】インスタンスメソッドが NoMethodError となり、適応されない

解決したいこと

現在、ProgateでRuby on Railsを勉強中です。
Twitterのようなウェブアプリケーションを作成しています。
その中で、インスタンスメソッドを定義したのですが、エラーが出てしまいました。
解決策をご教示いただけますと幸いです;;

発生している問題・エラー

NoMethodError in PostsController#show

  def show
    @post = Post.find_by(id:params[:id])
    @user = @post.user
  end

以下、私の作成したコードです。

post.rb

class Post < ApplicationRecord
  def user
    return User.find_by(id: self.user_id)
  end

end

posts_controller.rb

  def show
    @post = Post.find_by(id:params[:id])
    @user = @post.user
  end

show.html.erb

      <div class="post-user-name">
        <img src="<%= "/user_images/#{@user.user_image}" %>">
        <%= link_to(@user.name, "/users/#{@user.id}") %>
      </div>

バージョン

ruby 3.1.2p20
Rails 7.0.5

### 自分で試したこと
いろいろ調べてみたのですが、行き詰まってしまい、これ以上先に進めない状況です;;
どなたかお助けいただけますと幸いです;;

0

1Answer

エラーの読み方がわかっていませんでした;;

インスタンスメソッドが定義されていないのではなく、
インスタンスメソッドを受ける予定のデータが存在しないという状況でした😂

0Like

Your answer might help someone💌