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

質問編集履歴

5

実現したいことを具体的に記載しました

2020/06/02 14:30

投稿

otdsh9432
otdsh9432

スコア55

title CHANGED
File without changes
body CHANGED
@@ -49,6 +49,19 @@
49
49
  ⑤いいね数が0になると、ようやくいいねボタンが白抜きのハートに戻り、いいね追加処理が行えるようになる
50
50
  ![イメージ説明](a7653b7d7aa8d88ca6f1a3c616721054.png)
51
51
 
52
+ ### schema.rb ※いいねデータのみ
53
+ ```ruby
54
+ create_table "likes", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", force: :cascade do |t|
55
+ t.integer "user_id", null: false
56
+ t.integer "post_id", null: false
57
+ t.datetime "created_at", null: false
58
+ t.datetime "updated_at", null: false
59
+ t.index ["post_id"], name: "index_likes_on_post_id"
60
+ t.index ["user_id", "post_id"], name: "index_likes_on_user_id_and_post_id", unique: true
61
+ t.index ["user_id"], name: "index_likes_on_user_id"
62
+ end
63
+ ```
64
+
52
65
  ### routes.rb ※いいねの箇所のみ
53
66
  ```ruby
54
67
  resources :posts do

4

誤字のため修正

2020/06/02 14:30

投稿

otdsh9432
otdsh9432

スコア55

title CHANGED
File without changes
body CHANGED
@@ -101,7 +101,7 @@
101
101
  end
102
102
  ```
103
103
 
104
- ### post.rb (モデル(いいね))※関連箇所のみ
104
+ ### like.rb (モデル(いいね))※関連箇所のみ
105
105
  ```ruby
106
106
  class Like < ApplicationRecord
107
107
  belongs_to :user

3

実現したいことを具体的に記載しました。

2020/06/02 14:28

投稿

otdsh9432
otdsh9432

スコア55

title CHANGED
File without changes
body CHANGED
@@ -93,6 +93,24 @@
93
93
  $(".like_btn-<%= @post.id %>").html("<%= escape_javascript(render "shared/like", post: @post) %>");
94
94
  ```
95
95
 
96
+ ### post.rb (モデル(投稿))
97
+ ```ruby
98
+ class Post < ApplicationRecord
99
+ belongs_to :user
100
+ has_many :likes, dependent: :destroy
101
+ end
102
+ ```
103
+
104
+ ### post.rb (モデル(いいね))※関連箇所のみ
105
+ ```ruby
106
+ class Like < ApplicationRecord
107
+ belongs_to :user
108
+ belongs_to :post, counter_cache: :likes_count
109
+ validates :user_id, presence: true
110
+ validates :post_id, presence: true
111
+ end
112
+ ```
113
+
96
114
  ### index.html.erb (投稿一覧画面)※いいねボタンの箇所のみ
97
115
  ```ruby
98
116
  <% @posts.each do |post| %>

2

rubyのバージョンを明記

2020/06/02 14:26

投稿

otdsh9432
otdsh9432

スコア55

title CHANGED
File without changes
body CHANGED
@@ -18,11 +18,11 @@
18
18
  **「いいね数が1以上の投稿に対し、白抜きハートのいいねボタンをクリックし、いいね追加を行う」→「その後、いいねが2以上になった投稿に対し、黒塗りのハートのいいねボタンをクリックし、いいね取消を行う」**
19
19
  この操作の想定結果と、実際に今起こってしまった結果は以下の通りです。
20
20
 
21
- 想定していた結果(実現したい結果)
21
+ ### 想定していた結果(実現したい結果)
22
22
  いいねが取り消され、いいね数が1つ減少し、いいねボタンが白抜きに変わる。
23
23
  →この後、白抜きとなっているいいねボタンを押すと、再びいいね追加処理が行える。
24
24
 
25
- 今起こってしまった結果
25
+ ### 今起こってしまった結果
26
26
  いいねが取り消され、いいね数が1つ減少するが、いいねボタンは黒塗りのハートのままとなる。
27
27
  →この後、黒塗りのハートボタンを押すと、いいね取消処理が実行され、いいね数が1つ減少する。
28
28
  →いいね数が0になるまで取消処理を行うことができてしまう。いいね数が0になると、ようやくいいねボタンが白抜きのハートに戻り、いいね追加処理が行えるようになる。
@@ -148,5 +148,10 @@
148
148
  Ajaxでの取消処理実行時の注意事項なども調査中ではありますが、
149
149
  並行して皆様にお力添えいただきたい次第です。
150
150
 
151
+ <バージョン>
152
+ ruby:2.6.5
153
+ rails:5.2.4.3
154
+ 開発環境:Docker version 19.03.1
155
+
151
156
  不足情報等ございましたら、ご指摘いただいたけますと幸いです。
152
157
  よろしくお願いいたします。

1

実現したいことを具体的に記載しました。

2020/06/02 14:23

投稿

otdsh9432
otdsh9432

スコア55

title CHANGED
File without changes
body CHANGED
@@ -38,11 +38,11 @@
38
38
  ![イメージ説明](3007b909c3d0e877acd39a164784f036.png)
39
39
 
40
40
 
41
- ③その後、いいねが2以上になった投稿に対し、黒塗りのハートのいいねボタンをクリックし、いいね取消を行う(いいね数が1つ減少するが、いいねボタンは黒塗りのハートのままとなる)
41
+ **③その後、いいねが2以上になった投稿に対し、黒塗りのハートのいいねボタンをクリックし、いいね取消を行う(いいね数が1つ減少するが、いいねボタンは黒塗りのハートのままとなる)※問題点**
42
42
  ![イメージ説明](ce2f33c8c9ea63761097d7e5acf7c657.png)
43
43
 
44
44
 
45
- ④いいね数が0になるまで取消処理を行うことができてしまう。
45
+ **④いいね数が0になるまで取消処理を行うことができてしまう。※問題点**
46
46
  ![イメージ説明](5f593312a7511cc6a7547fee2a924222.png)
47
47
 
48
48
 
@@ -139,6 +139,11 @@
139
139
  ![イメージ説明](1aac06d51ed631ac1d1c1fe468d703ee.png)
140
140
 
141
141
 
142
+ いいねボタンの表示判定時、
143
+ Like.find_by(user_id: current_user.id ,post_id: post.id)でいいねデータを取得できているはずなのに、正しく判定できていないようです。(いいね数は正確に集計できている)
144
+ Rails cでLike.find_byでデータ取得すると、いいね取消処理実行後はnilが取得できるのに、
145
+ 画面でのif文判定時はnilが返らないのが、なぜかわかっておりません。(Ajaxに起因するものかと推測して、調査中です)
146
+
142
147
  処理とデータの流れを一つ一つ追っていったり、
143
148
  Ajaxでの取消処理実行時の注意事項なども調査中ではありますが、
144
149
  並行して皆様にお力添えいただきたい次第です。