teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

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

2021/03/26 11:57

投稿

kawasaki4563
kawasaki4563

スコア32

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,8 @@
1
1
  自分のポートフォリオのアプリケーションに投稿に対して高評価できる機能を実装しようと思ったのですが、投稿が成功して投稿一覧ページに遷移するときにmodelの部分でエラーになってしまいます
2
2
  ユーザー管理はdeviseを使っています。
3
-
3
+ 参照させていただいた記事はこちらの記事です
4
+
5
+ [Rails いいね機能のミニアプリを作ろう](https://qiita.com/keitah/items/12b50c86bcfa9cfb4db9#likerb)
4
6
  エラー画面に出てきているコードは、
5
7
  こちらの部分です
6
8
  user.rbの部分のコードです

4

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

2021/03/26 11:57

投稿

kawasaki4563
kawasaki4563

スコア32

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

3

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

2021/03/26 11:14

投稿

kawasaki4563
kawasaki4563

スコア32

title CHANGED
File without changes
body CHANGED
@@ -261,4 +261,14 @@
261
261
  ```
262
262
  として、postの部分の情報をとってこれるようにしようと思ったのですが、そしたらボタンそのものが表示されなくなってしまいました。
263
263
  ですのでそれを消したあとに、パスの部分の(@post)の部分を消してみたところ、投稿は表示されたのですが、いいねボタン自体は機能していなかったです。
264
- ですので、やっぱり`post_id :post.id`の部分が機能していないあるいは、postのidをどこかで撮ってこれていないからではないかと考えています。
264
+ ですので、やっぱり`post_id :post.id`の部分が機能していないあるいは、postのidをどこかで撮ってこれていないからではないかと考えています。
265
+
266
+ 回答者様にアドバイスを頂いたので、
267
+ ``` <% if current_user.already_liked?(@post) %>
268
+ <%= button_to 'いいねを取り消す', post_like_path(post), method: :delete %>
269
+ <% else %>
270
+ <%= button_to 'いいね', post_likes_path(post) %>
271
+ <% end %>
272
+
273
+ ```
274
+ に変えてみたのですがやはり同じエラーでした。

2

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

2021/03/26 02:55

投稿

kawasaki4563
kawasaki4563

スコア32

title CHANGED
File without changes
body CHANGED
@@ -228,4 +228,37 @@
228
228
  </div>
229
229
  </div>
230
230
  </div>
231
- ```
231
+ ```
232
+
233
+ # 試したこと
234
+ ビューの部分に
235
+
236
+ ```
237
+ <div class="like">
238
+ <h3>いいね件数: <%= post.likes.count %></h3>
239
+ <div class = 'like-button'>
240
+ <% if current_user.already_liked?(@post) %>
241
+ <%= button_to 'いいねを取り消す', post_like_path(@post), method: :delete %>
242
+ <% else %>
243
+ <%= button_to 'いいね', post_likes_path(@post) %>
244
+ <% end %>
245
+ </div>
246
+ ```
247
+ こちらの部分を
248
+
249
+ ```
250
+ <div class="like">
251
+ <h3>いいね件数: <%= post.likes.count %></h3>
252
+ <div class = 'like-button'>
253
+         <%if @post.present?%>
254
+ <% if current_user.already_liked?(@post) %>
255
+ <%= button_to 'いいねを取り消す', post_like_path(@post), method: :delete %>
256
+ <% else %>
257
+ <%= button_to 'いいね', post_likes_path(@post) %>
258
+ <% end %>
259
+ <% end %>
260
+ </div>
261
+ ```
262
+ として、postの部分の情報をとってこれるようにしようと思ったのですが、そしたらボタンそのものが表示されなくなってしまいました。
263
+ ですのでそれを消したあとに、パスの部分の(@post)の部分を消してみたところ、投稿は表示されたのですが、いいねボタン自体は機能していなかったです。
264
+ ですので、やっぱり`post_id :post.id`の部分が機能していないあるいは、postのidをどこかで撮ってこれていないからではないかと考えています。

1

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

2021/03/25 10:37

投稿

kawasaki4563
kawasaki4563

スコア32

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