質問編集履歴
2
ターミナルの情報を記述
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
いいね機能を非同期にしたい。 リロードをすれば読み込まれる。
|
1
|
+
未解決 いいね機能を非同期にしたい。 リロードをすれば読み込まれる。
|
body
CHANGED
@@ -7,7 +7,37 @@
|
|
7
7
|
・ターミナルにはステータス200、エラーメッセージなし
|
8
8
|
|
9
9
|
と言った状態です
|
10
|
+
### ターミナル
|
10
11
|
|
12
|
+
```
|
13
|
+
Started POST "/posts/1/likes" for ::1 at 2020-12-10 09:27:06 +0900
|
14
|
+
Processing by LikesController#create as JS
|
15
|
+
Parameters: {"authenticity_token"=>"gLf2VbgAMI4UilZjwT13haZKK0LDa+wbfrBQ01UVsYyGDhEp7C/b4CKzqM3oFWv+ThkVcXMsN+FPFIUSlUwNbA==", "post_id"=>"1"}
|
16
|
+
Post Load (0.5ms) SELECT `posts`.* FROM `posts` WHERE `posts`.`id` = 1 LIMIT 1
|
17
|
+
↳ app/controllers/likes_controller.rb:21:in `set_post'
|
18
|
+
User Load (0.7ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
|
19
|
+
↳ app/controllers/likes_controller.rb:6:in `create'
|
20
|
+
(0.2ms) BEGIN
|
21
|
+
↳ app/controllers/likes_controller.rb:6:in `create'
|
22
|
+
Post Load (0.4ms) SELECT `posts`.* FROM `posts` WHERE `posts`.`id` = 1 LIMIT 1
|
23
|
+
↳ app/controllers/likes_controller.rb:6:in `create'
|
24
|
+
User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
|
25
|
+
↳ app/controllers/likes_controller.rb:6:in `create'
|
26
|
+
Like Create (0.4ms) INSERT INTO `likes` (`user_id`, `post_id`, `created_at`, `updated_at`) VALUES (1, 1, '2020-12-10 00:27:06.440564', '2020-12-10 00:27:06.440564')
|
27
|
+
↳ app/controllers/likes_controller.rb:6:in `create'
|
28
|
+
Post Update All (0.5ms) UPDATE `posts` SET `posts`.`likes_count` = COALESCE(`posts`.`likes_count`, 0) + 1 WHERE `posts`.`id` = 1
|
29
|
+
↳ app/controllers/likes_controller.rb:6:in `create'
|
30
|
+
(1.3ms) COMMIT
|
31
|
+
↳ app/controllers/likes_controller.rb:6:in `create'
|
32
|
+
Rendering likes/create.js.erb
|
33
|
+
Like Load (0.5ms) SELECT `likes`.* FROM `likes` WHERE `likes`.`post_id` = 1 AND `likes`.`user_id` = 1 LIMIT 1
|
34
|
+
↳ app/models/post.rb:6:in `like_user'
|
35
|
+
Rendered likes/_like.html.erb (Duration: 5.1ms | Allocations: 1379)
|
36
|
+
Rendered likes/create.js.erb (Duration: 7.5ms | Allocations: 1731)
|
37
|
+
Completed 200 OK in 36ms (Views: 11.4ms | ActiveRecord: 5.0ms | Allocations: 10875)
|
38
|
+
```
|
39
|
+
|
40
|
+
|
11
41
|
### 該当のソースコード
|
12
42
|
|
13
43
|
```Ruby
|
1
状況が変わりましたので内容を変更しました
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
いいね機能を非同期にしたい。 リロードをすれば読み込まれる。
|
1
|
+
いいね機能を非同期にしたい。 リロードをすれば読み込まれる。
|
body
CHANGED
@@ -1,33 +1,13 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
3
|
現在SNSのようなアプリのいいね機能を実装中です。
|
4
|
-
ボタンになっている部分をクリックするとデータベースにはしっかりと記録が残り、リロードをすれば読み込まれます。
|
4
|
+
ボタンになっている部分をクリックするとデータベースにはしっかりと記録が残り、リロードをすれば読み込まれます。
|
5
5
|
|
6
|
+
・非同期になっていない
|
6
|
-
|
7
|
+
・ターミナルにはステータス200、エラーメッセージなし
|
7
8
|
|
8
|
-
```
|
9
|
-
ActionView::Template::Error (undefined local variable or method `post' for #<#<Class:0x00007fec95f91580>:0x00007fec95f8bb08>
|
10
|
-
Did you mean? @post):
|
11
|
-
1: <% if user_signed_in? %>
|
12
|
-
2: <% if post.like_user(current_user.id) %>
|
13
|
-
3: <%= button_to post_like_path(like, post_id: post.id), method: :delete, id: "but-like-button", remote: true do %>
|
14
|
-
4: <i class="fas fa-star"></i>
|
15
|
-
5: <span>
|
16
|
-
```
|
17
|
-
のメッセージが残っていました。
|
18
|
-
メッセージ通り@postに変更をすると
|
19
|
-
|
9
|
+
と言った状態です
|
20
|
-
```
|
21
|
-
ActionView::Template::Error (undefined method `like_user' for nil:NilClass):
|
22
|
-
1: <% if user_signed_in? %>
|
23
|
-
2: <% if @post.like_user(current_user.id) %>
|
24
|
-
3: <%= button_to post_like_path(like, post_id: post.id), method: :delete, id: "but-like-button", remote: true do %>
|
25
|
-
4: <i class="fas fa-star"></i>
|
26
|
-
5: <span>
|
27
10
|
|
28
|
-
```
|
29
|
-
のメッセージがブラウザ上に表示されます。
|
30
|
-
|
31
11
|
### 該当のソースコード
|
32
12
|
|
33
13
|
```Ruby
|
@@ -59,23 +39,26 @@
|
|
59
39
|
```
|
60
40
|
```Ruby
|
61
41
|
create.js.erb
|
62
|
-
$("#like-button").html("<%= j(render partial: 'like', locals: { tweets: @tweets, likes: @likes, like: @like}) %>")
|
63
42
|
|
43
|
+
$("#like-button-#{@post.id}").html("<%= j(render partial: 'like', locals: { posts: @posts, likes: @likes, like: @like, post: @post}) %>")
|
44
|
+
|
64
45
|
```
|
65
46
|
```Ruby
|
66
47
|
destroy.js.erb
|
67
|
-
$("#but-like-button").html("<%= j(render partial: 'like', locals: { tweets: @tweets, likes: @likes, like: @like}) %>")
|
68
48
|
|
49
|
+
$("#like-button-#{@post.id}").html("<%= j(render partial: 'like', locals: { posts: @posts, likes: @likes, like: @like, post: @post}) %>")
|
50
|
+
|
51
|
+
|
69
52
|
```
|
70
53
|
```Ruby
|
71
54
|
likes_contoroller
|
72
55
|
|
73
|
-
|
56
|
+
before_action :set_post
|
74
57
|
|
75
58
|
def create
|
76
59
|
@like = Like.create(user_id: current_user.id, post_id: params[:post_id])
|
77
60
|
@likes = Like.where(post_id: params[:post_id])
|
78
|
-
@
|
61
|
+
@posts = Post.all
|
79
62
|
|
80
63
|
end
|
81
64
|
|
@@ -83,8 +66,7 @@
|
|
83
66
|
like = Like.find_by(user_id: current_user.id, post_id: params[:post_id])
|
84
67
|
like.destroy
|
85
68
|
@likes = Like.where(post_id: params[:post_id])
|
86
|
-
@
|
69
|
+
@posts = Post.all
|
87
|
-
|
88
70
|
end
|
89
71
|
|
90
72
|
private
|
@@ -93,6 +75,7 @@
|
|
93
75
|
end
|
94
76
|
|
95
77
|
end
|
78
|
+
|
96
79
|
```
|
97
80
|
```Ruby
|
98
81
|
like.rb
|
@@ -122,7 +105,7 @@
|
|
122
105
|
|
123
106
|
### 試したこと
|
124
107
|
|
125
|
-
それぞれのアクションの一番手前にbinding.pryをかけようと試みたところ、コンソールにうつる前にターミナルにエラーメッセージが出てしまい、コンソールに触ることができませんでした。
|
126
108
|
|
109
|
+
|
127
110
|
https://qiita.com/YuitoSato/items/94913d6a349a530b2ea2
|
128
111
|
こちらの記事を参考に実装を進めています
|