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

回答編集履歴

2

追記

2021/01/10 05:06

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -2,4 +2,23 @@
2
2
 
3
3
  `link_to "##", talk_like_path(talk,like), method: :delete`
4
4
 
5
- それでうまくいかなかったら、modelのcode載せてください。
5
+ それでうまくいかなかったら、modelのcode載せてください。
6
+
7
+ 追記
8
+ ああ、app/models/talk.rb:16 でエラーになっているわけではなさそうですね。
9
+ すると
10
+ `
11
+ - if talk.like?(current_user)
12
+ = link_to "##", talk_like_path(talk), method: :delete
13
+ - else
14
+ = link_to "#", talk_likes_path(talk), method: :post`
15
+ のどちらかの link_toが怪しいです。 postの方は問題ないですが、deleteの方ですね。
16
+ talk には沢山 likeがつくので、そのどのlikeなのか、がきちんと伝わっていないでことですね。
17
+ `talk_like_path(talk,like)`と回答しましたがそこが問題だ。
18
+ likeを特定する必要があります。
19
+ `def like?(user)` を直して、userがpostしたlikeを返すようにしましょう。
20
+ `liked_users.find{|linke_user| liked_user.user_id == user.id }&.like`
21
+ でしょうか。
22
+ method名とそぐわないから改名するのがよいかも。
23
+ で、
24
+ `- if (like = talk.like?(current_user))`

1

追記

2021/01/10 05:06

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -1,4 +1,5 @@
1
1
  `link_to "##", talk_like_path(talk), method: :delete`
2
2
 
3
3
  `link_to "##", talk_like_path(talk,like), method: :delete`
4
-
4
+
5
+ それでうまくいかなかったら、modelのcode載せてください。