質問編集履歴

11

情報の修正

2016/10/24 15:29

投稿

s.k
s.k

スコア423

test CHANGED
@@ -1 +1 @@
1
- 同一ユーザー2つの投稿のいいね機能誤作動修正
1
+ いいねしてない方のいいねの表示が切り替わります
test CHANGED
File without changes

10

情報の修正

2016/10/24 15:29

投稿

s.k
s.k

スコア423

test CHANGED
File without changes
test CHANGED
@@ -198,7 +198,7 @@
198
198
 
199
199
 
200
200
 
201
- ■■■追加部分■■■
201
+ ユーザーの関連づけコードも載せておきます。
202
202
 
203
203
 
204
204
 
@@ -257,5 +257,3 @@
257
257
  validates :micropost, presence: true
258
258
 
259
259
  ```
260
-
261
- ■■■追加部分■■■

9

情報修正

2016/10/24 14:47

投稿

s.k
s.k

スコア423

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,22 @@
1
1
  ###前提・実現したいこと
2
2
 
3
+ クリックしたいいねリンクをajaxでいいねを取り消すへ切り替えたい。
4
+
5
+
6
+
7
+ 【元の状態】
8
+
9
+ ![](3afca48d8ee71e62c7ef2232a4b28df2.png)
10
+
11
+
12
+
3
- ajaxを実装したいいね機能作りたい。
13
+ test2の投稿のいいねをクリック
14
+
15
+ ![](a23ddbca982ff12e69516a98c644a0db.png)
16
+
17
+
18
+
19
+ このようにクリックしたリンクがajaxにより切り替わるようにしたいです。
4
20
 
5
21
 
6
22
 
@@ -8,17 +24,11 @@
8
24
 
9
25
 
10
26
 
11
- 同ユーザーが二つの投稿をしています。
27
+
12
-
13
- 下のいいねをクリックすると「上の」いいねの表示が変わります。
28
+
14
-
15
-
16
-
17
- ★追加部分★
18
-
19
- 小泉というUserがtest1とtest2という投稿をしており、
29
+ 小泉(Userモデル)というユーザーがtest1とtest2という投稿をしており、
20
-
30
+
21
- Shopがいいねをする場合です。(私は小泉という苗字ではないんですが!)
31
+ Shop(Shopモデル)というユーザー小泉のtest2の投稿にいいねをする場合です。(私は小泉という苗字ではないんですが!)
22
32
 
23
33
  ![](b3d2e5a273c16f54fae7fb357054c2ac.png)
24
34
 
@@ -32,7 +42,11 @@
32
42
 
33
43
 
34
44
 
35
- ★追加部分★
45
+
46
+
47
+
48
+
49
+
36
50
 
37
51
 
38
52
 

8

情報修正

2016/10/24 14:46

投稿

s.k
s.k

スコア423

test CHANGED
File without changes
test CHANGED
@@ -14,31 +14,11 @@
14
14
 
15
15
 
16
16
 
17
- 【理想】
18
-
19
- (投稿2のいいねをクリック!)
20
-
21
- 投稿1:いいね
22
-
23
- 投稿2:いいね→いいねを取り消す
24
-
25
-
26
-
27
- 【現状】
28
-
29
- (投稿2のいいねをクリック!)
30
-
31
- 投稿1:いいね→いいねを取り消す←実際に切り替わるのはこちら。
32
-
33
- 投稿2:いいね(更新すると「いいねを取り消すに切り替わる」)
34
-
35
-
36
-
37
17
  ★追加部分★
38
18
 
39
19
  小泉というUserがtest1とtest2という投稿をしており、
40
20
 
41
- それを小泉以外のユーザーがいいねをする場合です。(私は小泉という苗字ではないんですが!)
21
+ Shopがいいねをする場合です。(私は小泉という苗字ではないんですが!)
42
22
 
43
23
  ![](b3d2e5a273c16f54fae7fb357054c2ac.png)
44
24
 

7

情報追加

2016/10/24 14:37

投稿

s.k
s.k

スコア423

test CHANGED
File without changes
test CHANGED
@@ -42,6 +42,16 @@
42
42
 
43
43
  ![](b3d2e5a273c16f54fae7fb357054c2ac.png)
44
44
 
45
+
46
+
47
+ test2投稿のいいねを押すと
48
+
49
+ test1の投稿のajaxが作動します。。。↓
50
+
51
+ ![](f534357d39d515922ffaeee397acf595.png)
52
+
53
+
54
+
45
55
  ★追加部分★
46
56
 
47
57
 

6

情報修正

2016/10/24 14:34

投稿

s.k
s.k

スコア423

test CHANGED
File without changes
test CHANGED
@@ -34,222 +34,224 @@
34
34
 
35
35
 
36
36
 
37
+ ★追加部分★
38
+
39
+ 小泉というUserがtest1とtest2という投稿をしており、
40
+
41
+ それを小泉以外のユーザーがいいねをする場合です。(私は小泉という苗字ではないんですが!)
42
+
43
+ ![](b3d2e5a273c16f54fae7fb357054c2ac.png)
44
+
45
+ ★追加部分★
46
+
47
+
48
+
49
+ データの流れる順番にコードを書いていきます。
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+ ①いいねを押す
58
+
59
+ 【micropost.html.erb】(いいねのリンクが貼ってあるファイル)
60
+
61
+ ```
62
+
63
+ <% if shop_signed_in? %>
64
+
65
+ <div id="sympathizes_ajax">
66
+
67
+ <%= render 'sympathizes/sympathize_links', micropost: micropost %>
68
+
69
+ </div>
70
+
71
+ <% end %>
72
+
73
+
74
+
75
+ ```
76
+
77
+
78
+
79
+ ↓①いいねを押す
80
+
81
+ 【sympathizes/_sympathize_links.html.erb】
82
+
83
+ ```
84
+
85
+ <% if micropost.sympathized_by? current_shop %>
86
+
87
+ <%= link_to 'いいね!を取り消す', micropost_sympathizes_path(micropost.id), method: :delete, remote: true %>
88
+
89
+ <% else %>
90
+
91
+ <%= link_to 'いいね!', micropost_sympathizes_path(micropost.id), method: :post, remote: true %>
92
+
93
+ <% end %>
94
+
95
+ ```
96
+
97
+
98
+
99
+ ↓②createアクションへ
100
+
101
+ 【sympathizes.controller.rb】
102
+
103
+
104
+
105
+ ```
106
+
107
+ def create
108
+
109
+ @micropost = Micropost.find(params[:micropost_id])
110
+
111
+ @sympathize = current_shop.sympathizes.build(micropost: @micropost)
112
+
113
+ @sympathize.save
114
+
115
+ end
116
+
117
+
118
+
119
+
120
+
121
+ def destroy
122
+
123
+ @micropost = Micropost.find(params[:micropost_id])
124
+
125
+ @sympathize = current_shop.sympathizes.find_by!(micropost_id: params[:micropost_id])
126
+
127
+ @sympathize.destroy
128
+
129
+ end
130
+
131
+ ```
132
+
133
+ @sympathizeにデータが入り保存される。
134
+
135
+
136
+
137
+ ③ここで、create.jsファイルが起動!
138
+
139
+ 【sympathizes/create.js.erb】
140
+
141
+ ```
142
+
143
+ $('#sympathizes_ajax').html('<%= escape_javascript(render("sympathizes/sympathize_links", micropost: @micropost)) %>');
144
+
145
+ ```
146
+
147
+
148
+
149
+ ここで、いいね→いいねを取り消すとなります。
150
+
151
+ ④もう一度クリックすると
152
+
153
+
154
+
155
+ 【sympathizes/destroy.js.erb】
156
+
157
+ ```
158
+
159
+ $('#sympathizes_ajax').html('<%= escape_javascript(render("sympathizes/sympathize_links", micropost: @micropost)) %>');
160
+
161
+ ```
162
+
163
+
164
+
165
+
166
+
167
+ いいねを取り消す→いいねに切り替わります。
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+ これかな?と思った原因を一応書きます
176
+
177
+ (ここから違っていればガンガンご指摘お願いします。)
178
+
179
+
180
+
181
+ ・createもしくはdestroyファイルのデータの送信先が指定されていないために、
182
+
183
+ 下のいいねをクリックすると上のいいねにデータが送られてしまう。(上のいいねはクリックするといいねを取り消すに切り替わります。下のいいねの表示は切り替わりません。)
184
+
185
+
186
+
187
+ ですので、createとdestroyのデータ送信先を区別できるような方法をとればいいのか。。。?
188
+
189
+ と思ったのですが、まったく想像がつかずご相談にあがりました。。。
190
+
191
+
192
+
193
+
194
+
195
+
196
+
37
197
  ■■■追加部分■■■
38
198
 
39
- 小泉というUserがtest1とtest2という投稿をしており、
40
-
41
- それを小泉以外のユーザーがいいねをする場合です。(私は小泉という苗字ではないんですが!)
42
-
43
- ![](b3d2e5a273c16f54fae7fb357054c2ac.png)
44
-
45
-
46
-
47
-
48
-
49
- データの流れる順番にコードを書いていきます。
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
- ①いいねを押す
58
-
59
- 【micropost.html.erb】(いいねのリンクが貼ってあるファイル)
60
-
61
- ```
62
-
63
- <% if shop_signed_in? %>
64
-
65
- <div id="sympathizes_ajax">
66
-
67
- <%= render 'sympathizes/sympathize_links', micropost: micropost %>
68
-
69
- </div>
70
-
71
- <% end %>
72
-
73
-
74
-
75
- ```
76
-
77
-
78
-
79
- ↓①いいねを押す
80
-
81
- 【sympathizes/_sympathize_links.html.erb】
82
-
83
- ```
84
-
85
- <% if micropost.sympathized_by? current_shop %>
86
-
87
- <%= link_to 'いいね!を取り消す', micropost_sympathizes_path(micropost.id), method: :delete, remote: true %>
88
-
89
- <% else %>
90
-
91
- <%= link_to 'いいね!', micropost_sympathizes_path(micropost.id), method: :post, remote: true %>
92
-
93
- <% end %>
94
-
95
- ```
96
-
97
-
98
-
99
- ↓②createアクションへ
100
-
101
- 【sympathizes.controller.rb】
102
-
103
-
104
-
105
- ```
106
-
107
- def create
108
-
109
- @micropost = Micropost.find(params[:micropost_id])
110
-
111
- @sympathize = current_shop.sympathizes.build(micropost: @micropost)
112
-
113
- @sympathize.save
114
-
115
- end
199
+
200
+
201
+ 【shop.rb】
202
+
203
+ ```
204
+
205
+
206
+
207
+ #sympathizes(shop-to-micropost.user)
208
+
209
+ has_many :microposts, dependent: :destroy
210
+
211
+ has_many :sympathizes, dependent: :destroy
212
+
213
+ has_many :sympathize_microposts, through: :sympathizes, source: :micropost
214
+
215
+ ```
216
+
217
+
218
+
219
+ 【micropost.rb】
220
+
221
+
222
+
223
+ ```
224
+
225
+ #sympathizes(shop-to-micropost.user)
226
+
227
+ has_many :sympathizes, dependent: :destroy
228
+
229
+ has_many :sympathize_users, through: :sympathizes, source: :shop
230
+
231
+ belongs_to :shop
232
+
233
+ ```
234
+
235
+
236
+
237
+ 【sympathize.rb】
238
+
239
+
240
+
241
+ ```
242
+
243
+ belongs_to :shop
244
+
245
+ belongs_to :micropost
116
246
 
117
247
 
118
248
 
119
-
120
-
121
- def destroy
249
+ validates :shop, presence: true
122
-
250
+
123
- @micropost = Micropost.find(params[:micropost_id])
251
+ validates :shop_id, uniqueness: { scope: :micropost_id }
124
-
125
- @sympathize = current_shop.sympathizes.find_by!(micropost_id: params[:micropost_id])
252
+
126
-
127
- @sympathize.destroy
253
+ validates :micropost, presence: true
128
-
129
- end
254
+
130
-
131
- ```
255
+ ```
132
-
133
- @sympathizeにデータが入り保存される。
134
-
135
-
136
-
137
- ③ここで、create.jsファイルが起動!
138
-
139
- 【sympathizes/create.js.erb】
140
-
141
- ```
142
-
143
- $('#sympathizes_ajax').html('<%= escape_javascript(render("sympathizes/sympathize_links", micropost: @micropost)) %>');
144
-
145
- ```
146
-
147
-
148
-
149
- ここで、いいね→いいねを取り消すとなります。
150
-
151
- ④もう一度クリックすると
152
-
153
-
154
-
155
- 【sympathizes/destroy.js.erb】
156
-
157
- ```
158
-
159
- $('#sympathizes_ajax').html('<%= escape_javascript(render("sympathizes/sympathize_links", micropost: @micropost)) %>');
160
-
161
- ```
162
-
163
-
164
-
165
-
166
-
167
- いいねを取り消す→いいねに切り替わります。
168
-
169
-
170
-
171
-
172
-
173
-
174
-
175
- これかな?と思った原因を一応書きます
176
-
177
- (ここから違っていればガンガンご指摘お願いします。)
178
-
179
-
180
-
181
- ・createもしくはdestroyファイルのデータの送信先が指定されていないために、
182
-
183
- 下のいいねをクリックすると上のいいねにデータが送られてしまう。(上のいいねはクリックするといいねを取り消すに切り替わります。下のいいねの表示は切り替わりません。)
184
-
185
-
186
-
187
- ですので、createとdestroyのデータ送信先を区別できるような方法をとればいいのか。。。?
188
-
189
- と思ったのですが、まったく想像がつかずご相談にあがりました。。。
190
-
191
-
192
-
193
-
194
-
195
-
196
256
 
197
257
  ■■■追加部分■■■
198
-
199
-
200
-
201
- 【shop.rb】
202
-
203
- ```
204
-
205
-
206
-
207
- #sympathizes(shop-to-micropost.user)
208
-
209
- has_many :microposts, dependent: :destroy
210
-
211
- has_many :sympathizes, dependent: :destroy
212
-
213
- has_many :sympathize_microposts, through: :sympathizes, source: :micropost
214
-
215
- ```
216
-
217
-
218
-
219
- 【micropost.rb】
220
-
221
-
222
-
223
- ```
224
-
225
- #sympathizes(shop-to-micropost.user)
226
-
227
- has_many :sympathizes, dependent: :destroy
228
-
229
- has_many :sympathize_users, through: :sympathizes, source: :shop
230
-
231
- belongs_to :shop
232
-
233
- ```
234
-
235
-
236
-
237
- 【sympathize.rb】
238
-
239
-
240
-
241
- ```
242
-
243
- belongs_to :shop
244
-
245
- belongs_to :micropost
246
-
247
-
248
-
249
- validates :shop, presence: true
250
-
251
- validates :shop_id, uniqueness: { scope: :micropost_id }
252
-
253
- validates :micropost, presence: true
254
-
255
- ```

5

情報の追加

2016/10/24 14:28

投稿

s.k
s.k

スコア423

test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,13 @@
34
34
 
35
35
 
36
36
 
37
+ ■■■追加部分■■■
38
+
39
+ 小泉というUserがtest1とtest2という投稿をしており、
40
+
41
+ それを小泉以外のユーザーがいいねをする場合です。(私は小泉という苗字ではないんですが!)
42
+
37
- ![](f10ea745bf894edf8ef91871bcbee870.png)
43
+ ![](b3d2e5a273c16f54fae7fb357054c2ac.png)
38
44
 
39
45
 
40
46
 

4

情報追加

2016/10/24 14:23

投稿

s.k
s.k

スコア423

test CHANGED
File without changes
test CHANGED
@@ -180,4 +180,70 @@
180
180
 
181
181
  ですので、createとdestroyのデータ送信先を区別できるような方法をとればいいのか。。。?
182
182
 
183
- と思ったのですが、まったく想像がつかずご相談にりました。
183
+ と思ったのですが、まったく想像がつかずご相談にあがりました。。。
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+ ■■■追加部分■■■
192
+
193
+
194
+
195
+ 【shop.rb】
196
+
197
+ ```
198
+
199
+
200
+
201
+ #sympathizes(shop-to-micropost.user)
202
+
203
+ has_many :microposts, dependent: :destroy
204
+
205
+ has_many :sympathizes, dependent: :destroy
206
+
207
+ has_many :sympathize_microposts, through: :sympathizes, source: :micropost
208
+
209
+ ```
210
+
211
+
212
+
213
+ 【micropost.rb】
214
+
215
+
216
+
217
+ ```
218
+
219
+ #sympathizes(shop-to-micropost.user)
220
+
221
+ has_many :sympathizes, dependent: :destroy
222
+
223
+ has_many :sympathize_users, through: :sympathizes, source: :shop
224
+
225
+ belongs_to :shop
226
+
227
+ ```
228
+
229
+
230
+
231
+ 【sympathize.rb】
232
+
233
+
234
+
235
+ ```
236
+
237
+ belongs_to :shop
238
+
239
+ belongs_to :micropost
240
+
241
+
242
+
243
+ validates :shop, presence: true
244
+
245
+ validates :shop_id, uniqueness: { scope: :micropost_id }
246
+
247
+ validates :micropost, presence: true
248
+
249
+ ```

3

情報修正、追加

2016/10/24 14:16

投稿

s.k
s.k

スコア423

test CHANGED
@@ -1 +1 @@
1
- 同一idでajaxを実装した場合、ajaxによるデ送信先を指定できるメソッドはありますか??
1
+ 同一ザー2つの投稿のいい機能の誤作動修正
test CHANGED
@@ -34,7 +34,15 @@
34
34
 
35
35
 
36
36
 
37
+ ![](f10ea745bf894edf8ef91871bcbee870.png)
38
+
39
+
40
+
41
+
42
+
37
43
  データの流れる順番にコードを書いていきます。
44
+
45
+
38
46
 
39
47
 
40
48
 

2

書式の改善

2016/10/24 14:08

投稿

s.k
s.k

スコア423

test CHANGED
File without changes
test CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
 
84
84
 
85
- ↓createアクションへ
85
+ createアクションへ
86
86
 
87
87
  【sympathizes.controller.rb】
88
88
 
@@ -120,7 +120,7 @@
120
120
 
121
121
 
122
122
 
123
- ここで、下記ファイルが起動!
123
+ ここで、create.jsファイルが起動!
124
124
 
125
125
  【sympathizes/create.js.erb】
126
126
 
@@ -134,7 +134,7 @@
134
134
 
135
135
  ここで、いいね→いいねを取り消すとなります。
136
136
 
137
- もう一度クリックすると
137
+ もう一度クリックすると
138
138
 
139
139
 
140
140
 

1

情報の修正

2016/10/24 13:50

投稿

s.k
s.k

スコア423

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ###前提・実現したいこと
2
2
 
3
- ajaxを実装したいいね機能のデータ送信先メソッドで指定したい。
3
+ ajaxを実装したいいね機能を作りたい。
4
4
 
5
5
 
6
6