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

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

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

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

Q&A

解決済

1回答

665閲覧

railsのいいね機能の変数エラーについて

Qurof

総合スコア7

Ruby on Rails

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

0グッド

1クリップ

投稿2020/09/23 07:36

編集2020/09/23 07:57

前提・実現したいこと

railsを使ってwebアプリケーションを作成中です。
自分がいいねをつけた投稿を全投稿の中からソートして画面に表示したいです。
しかし、postの部分にエラーが出てしまいました。
その実

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

Showing C:/Users/user/dome/app/views/users/likesline.html.erb where line #26 raised: undefined method `id' for nil:NilClass
<% post = Post.find_by(id: like.post_id) %> <div class="users-index-item"> <%# ここから=========%> <%= link_to("/posts/#{post.id}") do %> <%# ここまで=========%> <div class="user-left"> <img src="<%= "/post_images/#{post.image_name}" %>"> </div>

##該当コード

####likesline.html.erb

<div class="users-contents"> <div class="users-index-item-sorce"> <% @like.each do |like| %> <% post = Post.find_by(id: like.post_id) %> <div class="users-index-item"> <%= link_to("/posts/#{post.id}") do %> <div class="user-left"> <img src="<%= "/post_images/#{post.image_name}" %>"> </div> <div class="post-right"> <div class="post-right-link"> <%= post.title %> </div> </div> <%end%> </div> <% end %> </div> </div>

####users_controller.erb

def likesline @user = User.find_by(id: params[:id]) @like = Like.where(user_id: @user.id) end

###DB(SQLite)
####users
id name email created_at updated_at image_name password
10 たんぽぽ tanpopo@gmail.com 2020-09-03 2020-09-14 10.jpg tanpopo
12 kosumosu kosumosu@gmail.com 2020-09-19 2020-09-19 12.jpg kosumosu
####posts
id content created_at updated_at user_id image_name title
46 contents1 2020-09-19 2020-09-19 10 46.jpg title1
47 dfsdfsdf 2020-09-19 2020-09-19 10 47.jpg df
####likes
id user_id post_id created_at updated_at
1 10 26 2020-09-04 03:57:42.503803 2020-09-04 03:57:42.503803
3 10 31 2020-09-18 12:28:35.206818 2020-09-18 12:28:35.206818
5 10 32 2020-09-19 02:27:20.465790 2020-09-19 02:27:20.465790
7 10 36 2020-09-19 06:27:53.983748 2020-09-19 06:27:53.983748
9 10 47 2020-09-19 10:50:58.208238 2020-09-19 10:50:58.208238
10 10 46 2020-09-20 07:30:15.554143 2020-09-20 07:30:15.554143

試したこと

主にprogateを参考にして、コントローラーやモデルの確認

補足情報

今回始めてterateilを使うので至らない部分があったら教えていただきたいです。
よろしくおねがいします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

likes id user_id post_id created_at updated_at 1 10 26 2020-09-04 03:57:42.503803 2020-09-04 03:57:42.503803 3 10 31 2020-09-18 12:28:35.206818 2020-09-18 12:28:35.206818 5 10 32 2020-09-19 02:27:20.465790 2020-09-19 02:27:20.465790 7 10 36 2020-09-19 06:27:53.983748 2020-09-19 06:27:53.983748

post_idが26,31,32,36のpostが存在していないため、find_byメソッドでnilが帰ってきています.
そのため、このエラーを解消するにはidが26,31,32,36のpostを作成するか、post_idが26,31,32,36のlikeを削除する必要があります.

投稿2020/09/24 01:43

編集2020/09/24 01:46
tky_7201

総合スコア37

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

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

Qurof

2020/09/24 05:38 編集

返信ありがとうございます。 posts.idとlikes.post_idの間の共通しないカラムが存在するのでエラーが出るということでよろしいでしょうか? likesテーブルの中にpostsテーブルにある既存のカラムと共通しないカラムを削除してみます
Qurof

2020/09/24 05:44

追記:ありがとうございました。成功しました。またよろしくおねがいします。
tky_7201

2020/09/24 05:45

良かったです.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問