質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

2365閲覧

comments' for nil:NilClassが解決できない

terusia

総合スコア10

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/04/14 09:00

前提・実現したいこと

投稿の詳細画面に飛んだ時にコメントをできるようにしたのですが、このエラーが出てしまいます。

発生している問題・エラーメッセージ

NoMethodError in TweetsController#show undefined method `comments' for nil:NilClass Extracted source (around line #25): 23 def show 24  @comment = Comment.new *25行目が赤く表示 25  @comments = @tweet.comments.includes(:user) 26 end 27 28 private

該当のソースコード

def show @comment = Comment.new @comments = @tweet.comments.includes(:user) end
<div class="comments"> <h4><コメント一覧></h4> <% if @comments %> <% @comments.each do |comment| %> <p> <strong><%= link_to comment.user.nickname, "/users/#{comment.user_id}" %>:</strong> <%= comment.text %> </p> 以下省略

試したこと

おそらくここのcommentを表示する部分で何も入力されていないからエラーが出ると思うのですが、<% if @comments %>を記載して無くても動くように記載したのですが解決できませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Railsはコントローラでデータを持ってきてビューでデータを表示するという流れです。
エラーを見るとコントローラでエラーが起きているので、ビューをいじってもエラーは改善しないと思います。

エラーの内容は@tweetがnilでcommentsが取れないから起こっているものです。

とりあえず、こんな感じで動くとは思います。

ruby

1 def show 2 @comment = Comment.new 3 @comments = @tweet ? @tweet.comments.includes(:user) : [] 4 end

投稿2020/04/17 08:55

編集2020/04/17 08:59
oouu

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問