質問編集履歴

5

参考にした記事のリンクを載せました

2021/03/26 11:57

投稿

kawasaki4563
kawasaki4563

スコア32

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,11 @@
2
2
 
3
3
  ユーザー管理はdeviseを使っています。
4
4
 
5
-
5
+ 参照させていただいた記事はこちらの記事です
6
+
7
+
8
+
9
+ [Rails いいね機能のミニアプリを作ろう](https://qiita.com/keitah/items/12b50c86bcfa9cfb4db9#likerb)
6
10
 
7
11
  エラー画面に出てきているコードは、
8
12
 

4

エラー画面で引っかかっているコードを載せました。

2021/03/26 11:57

投稿

kawasaki4563
kawasaki4563

スコア32

test CHANGED
@@ -1 +1 @@
1
- 高評価できる機能を作りたいのに投稿のIdを取得でき
1
+ 高評価できる機能を作りたいのにundefined method `id' for nil:NilClassにってしまう。
test CHANGED
@@ -1,11 +1,29 @@
1
1
  自分のポートフォリオのアプリケーションに投稿に対して高評価できる機能を実装しようと思ったのですが、投稿が成功して投稿一覧ページに遷移するときにmodelの部分でエラーになってしまいます
2
2
 
3
+ ユーザー管理はdeviseを使っています。
4
+
5
+
6
+
7
+ エラー画面に出てきているコードは、
8
+
9
+ こちらの部分です
10
+
11
+ user.rbの部分のコードです
12
+
13
+ ```
14
+
15
+ def already_liked?(post)
16
+
17
+ self.likes.exists?(post_id: post.id)
18
+
19
+ end
20
+
21
+ ```
22
+
3
23
 
4
24
 
5
25
  エラー文は以下の通りです
6
26
 
7
-
8
-
9
27
  ```
10
28
 
11
29
  NoMethodError in Posts#index

3

試してみたことに修正を加えました。

2021/03/26 11:14

投稿

kawasaki4563
kawasaki4563

スコア32

test CHANGED
File without changes
test CHANGED
@@ -525,3 +525,23 @@
525
525
  ですのでそれを消したあとに、パスの部分の(@post)の部分を消してみたところ、投稿は表示されたのですが、いいねボタン自体は機能していなかったです。
526
526
 
527
527
  ですので、やっぱり`post_id :post.id`の部分が機能していないあるいは、postのidをどこかで撮ってこれていないからではないかと考えています。
528
+
529
+
530
+
531
+ 回答者様にアドバイスを頂いたので、
532
+
533
+ ``` <% if current_user.already_liked?(@post) %>
534
+
535
+ <%= button_to 'いいねを取り消す', post_like_path(post), method: :delete %>
536
+
537
+ <% else %>
538
+
539
+ <%= button_to 'いいね', post_likes_path(post) %>
540
+
541
+ <% end %>
542
+
543
+
544
+
545
+ ```
546
+
547
+ に変えてみたのですがやはり同じエラーでした。

2

試したことを追記しました

2021/03/26 02:55

投稿

kawasaki4563
kawasaki4563

スコア32

test CHANGED
File without changes
test CHANGED
@@ -459,3 +459,69 @@
459
459
  </div>
460
460
 
461
461
  ```
462
+
463
+
464
+
465
+ # 試したこと
466
+
467
+ ビューの部分に
468
+
469
+
470
+
471
+ ```
472
+
473
+ <div class="like">
474
+
475
+ <h3>いいね件数: <%= post.likes.count %></h3>
476
+
477
+ <div class = 'like-button'>
478
+
479
+ <% if current_user.already_liked?(@post) %>
480
+
481
+ <%= button_to 'いいねを取り消す', post_like_path(@post), method: :delete %>
482
+
483
+ <% else %>
484
+
485
+ <%= button_to 'いいね', post_likes_path(@post) %>
486
+
487
+ <% end %>
488
+
489
+ </div>
490
+
491
+ ```
492
+
493
+ こちらの部分を
494
+
495
+
496
+
497
+ ```
498
+
499
+ <div class="like">
500
+
501
+ <h3>いいね件数: <%= post.likes.count %></h3>
502
+
503
+ <div class = 'like-button'>
504
+
505
+         <%if @post.present?%>
506
+
507
+ <% if current_user.already_liked?(@post) %>
508
+
509
+ <%= button_to 'いいねを取り消す', post_like_path(@post), method: :delete %>
510
+
511
+ <% else %>
512
+
513
+ <%= button_to 'いいね', post_likes_path(@post) %>
514
+
515
+ <% end %>
516
+
517
+ <% end %>
518
+
519
+ </div>
520
+
521
+ ```
522
+
523
+ として、postの部分の情報をとってこれるようにしようと思ったのですが、そしたらボタンそのものが表示されなくなってしまいました。
524
+
525
+ ですのでそれを消したあとに、パスの部分の(@post)の部分を消してみたところ、投稿は表示されたのですが、いいねボタン自体は機能していなかったです。
526
+
527
+ ですので、やっぱり`post_id :post.id`の部分が機能していないあるいは、postのidをどこかで撮ってこれていないからではないかと考えています。

1

誤字脱字があったので修正しました。

2021/03/25 10:37

投稿

kawasaki4563
kawasaki4563

スコア32

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,6 @@
1
- こちらの記事を参考にして、自分のポートフォリオのアプリケーションに投稿に対して高評価できる機能を実装しようと思ったのですが、投稿が成功して投稿一覧ページに遷移するときにmodelの部分でエラーになってしまいます
1
+ 自分のポートフォリオのアプリケーションに投稿に対して高評価できる機能を実装しようと思ったのですが、投稿が成功して投稿一覧ページに遷移するときにmodelの部分でエラーになってしまいます
2
-
3
-
4
-
5
- [Rails いいね機能のミニアプリを作ろう](https://qiita.com/keitah/items/12b50c86bcfa9cfb4db9#likerb)
2
+
3
+
6
4
 
7
5
  エラー文は以下の通りです
8
6