質問編集履歴
5
参考にした記事のリンクを載せました
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
エラー画面で引っかかっているコードを載せました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
高評価できる機能を作りたいのに
|
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
試してみたことに修正を加えました。
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
試したことを追記しました
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
誤字脱字があったので修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,8 +1,6 @@
|
|
1
|
-
|
1
|
+
自分のポートフォリオのアプリケーションに投稿に対して高評価できる機能を実装しようと思ったのですが、投稿が成功して投稿一覧ページに遷移するときにmodelの部分でエラーになってしまいます
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
|
3
|
+
|
6
4
|
|
7
5
|
エラー文は以下の通りです
|
8
6
|
|