質問編集履歴

8

2020/11/11 02:52

投稿

NEMOTOSHOTA
NEMOTOSHOTA

スコア32

test CHANGED
File without changes
test CHANGED
@@ -1,509 +1 @@
1
- 現在、下記記事を参考にしてフォロー機能を実装しています。
2
-
3
- https://qiita.com/mitsumitsu1128/items/e41e2ff37f143db81897#relationships%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%82%92%E4%BD%9C%E6%88%90%E7%B7%A8%E9%9B%86
4
-
5
-
6
-
7
- 下記のエラーが表示されています。
8
-
9
- ![イメージ説明](585e3c402a9fee184ba265ccca3d32c9.png)
10
-
11
-
12
-
13
- ##【推測】
14
-
15
- ・user_idの値を渡すはずなのにgym_idの値を渡してしまっている。
16
-
17
-
18
-
19
-
20
-
21
- 【試したこと】
22
-
23
- gym_idが1の投稿にいくと、ボタンが表示されるようです。
24
-
25
-
26
-
27
- ![イメージ説明](39e67a14b9c91b54443013b656129246.png)
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
- 記事中では、<%= render 'relationships/follow', user: @user %>を好きなところにおけば良いということでしたが動きませんでした。
42
-
43
-
44
-
45
-
46
-
47
- ##コード
48
-
49
-
50
-
51
- フォローボタンを配置したい場所はgymコントローラのshowアクションになります。
52
-
53
- views/gyms/show.html.erb
54
-
55
-
56
-
57
- ```
58
-
59
- <% set_meta_tags title: @gym.name %>
60
-
61
- <% breadcrumb :gym, @gym %>
62
-
63
-
64
-
65
- <div class="sidebar">
66
-
67
- <div class="sidebar__item">
1
+ あああああああああああああああああああああああああああああああああああああああああああ
68
-
69
- <h4 class ="recent_post">人気記事</h4>
70
-
71
- <ul class="popular-posts">
72
-
73
- <li class="sidebar_row">
74
-
75
- <% @related_blogs.each do |blog| %>
76
-
77
- <div class="sidebar_blogbox">
78
-
79
- <div class="gym_sidebar_title clearfix">
80
-
81
- <%= link_to (blog.title), blog_path(blog) %>
82
-
83
- </div>
84
-
85
- <% end %>
86
-
87
- </div>
88
-
89
- </li>
90
-
91
- <h4 class ="recent_gym_post">投稿</h4>
92
-
93
- <ul class="gym-posts">
94
-
95
- <li class="sidebar_row">
96
-
97
- <% @related_gyms.each do |related_gym| %>
98
-
99
- <div class="sidebar_related_gymbox">
100
-
101
- <div class ="related_gym_picture"><%= image_tag(related_gym.picture.first.url) %></div>
102
-
103
- <div class ="related_gym_name"><%= link_to (related_gym.name),gym_path(related_gym) %></div>
104
-
105
- </div>
106
-
107
- <% end %>
108
-
109
- </li>
110
-
111
- </ul>
112
-
113
- </div>
114
-
115
- </div>
116
-
117
- <div class="show-gymbox">
118
-
119
- <h2 class ="gym_name"><%= @gym.name %></h2>
120
-
121
- <div class="gym_picture">
122
-
123
- <div class="row">
124
-
125
- <% if @gym.picture[0].present? %>
126
-
127
- <div class="col-6">
128
-
129
- <%= image_tag "#{@gym.picture[0].url}", :alt => @gym.name %>
130
-
131
- <% end %>
132
-
133
- </div>
134
-
135
- <% if @gym.picture[0].present? %>
136
-
137
- <div class="col-4">
138
-
139
- <% @gym.picture.each_with_index do |picture,index| %>
140
-
141
- <%= image_tag "#{@gym.picture[index].url}", :alt => @gym.name %>
142
-
143
- <% end %>
144
-
145
- <% end %>
146
-
147
- </div>
148
-
149
- </div>
150
-
151
- </div>
152
-
153
- <h4 class ="ctitle"> <%= @gym.content %></h4>
154
-
155
- <% if current_user?(@gym.user) %>
156
-
157
- <button type="button" class="btn btn-success">
158
-
159
- <%= link_to "削除", @gym, method: :delete,data: { confirm: "削除しますか?" } %>
160
-
161
- <% end %>
162
-
163
- </button>
164
-
165
- <button type="button" class="btn btn-success">
166
-
167
- <%= link_to '戻る', gyms_path %>
168
-
169
- </button>
170
-
171
-
172
-
173
- <div class ="gym-like">
174
-
175
- <a class ="gym-like-a">いいね:<%= @gym.likes.count %></a>
176
-
177
- <% if current_user.already_liked?(@gym) %>
178
-
179
- <div class ="gym-like-button">
180
-
181
- <%= link_to '取り消す', gym_like_path(@gym), method: :delete %>
182
-
183
- </div>
184
-
185
- <% else %>
186
-
187
- <div class ="gym-like-button">
188
-
189
- <%= link_to 'いいね', gym_likes_path(@gym),method: :post %>
190
-
191
- </div>
192
-
193
- <% end %>
194
-
195
- </div>
196
-
197
-
198
-
199
- <h5 class ="ctitle"><%= render partial:'comments/comment_form' %></h5>
200
-
201
- <%= render 'relationships/follow', user: @user %> #ここを追加しています
202
-
203
- <p>
204
-
205
- <button type="button" class="btn btn-primary" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
206
-
207
- コメントを表示
208
-
209
- </button>
210
-
211
- </p>
212
-
213
- </div>
214
-
215
- <div class="collapse" id="collapseExample">
216
-
217
- <div class="card card-body">
218
-
219
- <div class="comment">
220
-
221
- <% if @comments.any? %>
222
-
223
- <%= render @comments %>
224
-
225
- <%= will_paginate @comments %>
226
-
227
- <% end %>
228
-
229
- </div>
230
-
231
- </div>
232
-
233
- </div>
234
-
235
- ```
236
-
237
-
238
-
239
-
240
-
241
- コードは下記の通りです。
242
-
243
-
244
-
245
- app/models/user.rb
246
-
247
-
248
-
249
- ```
250
-
251
- class User < ApplicationRecord
252
-
253
- has_many :relationships
254
-
255
- has_many :followings, through: :relationships, source: :follow
256
-
257
- has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: 'follow_id'
258
-
259
- has_many :followers, through: :reverse_of_relationships, source: :user
260
-
261
-
262
-
263
- def follow(other_user)
264
-
265
- unless self == other_user
266
-
267
- self.relationships.find_or_create_by(follow_id: other_user.id)
268
-
269
- end
270
-
271
- end
272
-
273
-
274
-
275
- def unfollow(other_user)
276
-
277
- relationship = self.relationships.find_by(follow_id: other_user.id)
278
-
279
- relationship.destroy if relationship
280
-
281
- end
282
-
283
-
284
-
285
- def following?(other_user)
286
-
287
- self.followings.include?(other_user)
288
-
289
- end
290
-
291
-
292
-
293
- end
294
-
295
- ```
296
-
297
-
298
-
299
-  
300
-
301
- app/controllers/relationships_controller.rb
302
-
303
-
304
-
305
- ```
306
-
307
- class RelationshipsController < ApplicationController
308
-
309
- before_action :set_user
310
-
311
-
312
-
313
- def create
314
-
315
- following = current_user.follow(@user)
316
-
317
- if following.save
318
-
319
- flash[:success] = 'ユーザーをフォローしました'
320
-
321
- redirect_to @user
322
-
323
- else
324
-
325
- flash.now[:alert] = 'ユーザーのフォローに失敗しました'
326
-
327
- redirect_to @user
328
-
329
- end
330
-
331
- end
332
-
333
-
334
-
335
- def destroy
336
-
337
- following = current_user.unfollow(@user)
338
-
339
- if following.destroy
340
-
341
- flash[:success] = 'ユーザーのフォローを解除しました'
342
-
343
- redirect_to @user
344
-
345
- else
346
-
347
- flash.now[:alert] = 'ユーザーのフォロー解除に失敗しました'
348
-
349
- redirect_to @user
350
-
351
- end
352
-
353
- end
354
-
355
-
356
-
357
- private
358
-
359
- def
360
-
361
- @user = User.find(params[:relationship][:follow_id])
362
-
363
- end
364
-
365
-
366
-
367
- end
368
-
369
-
370
-
371
- ```
372
-
373
-
374
-
375
- app/views/relationships/_follow_button.html.erb
376
-
377
-
378
-
379
- ```
380
-
381
- <% unless current_user == user %>
382
-
383
- <% if current_user.following?(user) %>
384
-
385
- <%= form_for(current_user.relationships.find_by(follow_id: user.id), html: { method: :delete }) do |f| %>
386
-
387
- <%= hidden_field_tag :follow_id, user.id %>
388
-
389
- <%= f.submit 'Unfollow', class: 'btn btn-danger btn-block' %>
390
-
391
- <% end %>
392
-
393
- <% else %>
394
-
395
- <%= form_for(current_user.relationships.build) do |f| %>
396
-
397
- <%= hidden_field_tag :follow_id, user.id %>
398
-
399
- <%= f.submit 'Follow', class: 'btn btn-primary btn-block' %>
400
-
401
- <% end %>
402
-
403
- <% end %>
404
-
405
- <% end %>
406
-
407
- ```
408
-
409
-
410
-
411
- config/routes.rb
412
-
413
-
414
-
415
- ```
416
-
417
- Rails.application.routes.draw do
418
-
419
-
420
-
421
- get 'contacts/new'
422
-
423
- get 'contacts/create'
424
-
425
- mount Ckeditor::Engine => '/ckeditor'
426
-
427
- mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
428
-
429
-
430
-
431
- root 'static_pages#home'
432
-
433
- #get '/help', to: 'static_pages#help'
434
-
435
- #get '/about', to: 'static_pages#about'
436
-
437
- #get '/contact', to: 'static_pages#contact'
438
-
439
- get '/signup', to: 'users#new'
440
-
441
- get '/login', to: 'sessions#new'
442
-
443
- post '/login', to: 'sessions#create'
444
-
445
- delete '/logout', to: 'sessions#destroy'
446
-
447
-
448
-
449
-
450
-
451
- resources :users
452
-
453
-
454
-
455
- resources :account_activations, only: [:edit]
456
-
457
-
458
-
459
- resources :posts, only: [:new, :show, :create, :destroy]
460
-
461
-
462
-
463
- resources :comments, only: [:create, :destroy]
464
-
465
-
466
-
467
- resources :password_resets, only: [:new, :create, :edit, :update]
468
-
469
-
470
-
471
- resources :gyms do
472
-
473
- resources :likes, only: [:create, :destroy]
474
-
475
- end
476
-
477
-
478
-
479
- resources :blogs
480
-
481
-
482
-
483
- resources :relationships, only: [:create, :destroy]
484
-
485
-
486
-
487
- resources :contacts, only: %i(new create) do
488
-
489
- collection do
490
-
491
- post :new, path: :new, as: :new, action: :back
492
-
493
- post :confirm
494
-
495
- end
496
-
497
- end
498
-
499
- end
500
-
501
-
502
-
503
- ```
504
-
505
-
506
-
507
-
508
-
509
- アドバイス、解決法がありましたらお願いします。

7

xz

2020/11/11 02:52

投稿

NEMOTOSHOTA
NEMOTOSHOTA

スコア32

test CHANGED
File without changes
test CHANGED
@@ -18,6 +18,16 @@
18
18
 
19
19
 
20
20
 
21
+ 【試したこと】
22
+
23
+ gym_idが1の投稿にいくと、ボタンが表示されるようです。
24
+
25
+
26
+
27
+ ![イメージ説明](39e67a14b9c91b54443013b656129246.png)
28
+
29
+
30
+
21
31
 
22
32
 
23
33
 

6

2020/06/04 03:40

投稿

NEMOTOSHOTA
NEMOTOSHOTA

スコア32

test CHANGED
@@ -1 +1 @@
1
- フォロー機能を実装したい。
1
+ フォロー機能に置いて@user = User.find(params[:id]の値user_idの値にしたい。
test CHANGED
@@ -6,17 +6,21 @@
6
6
 
7
7
  下記のエラーが表示されています。
8
8
 
9
- ![イメージ説明](5869f4dd953a07bf7d18417c74e786ce.png)
9
+ ![イメージ説明](585e3c402a9fee184ba265ccca3d32c9.png)
10
10
 
11
11
 
12
12
 
13
13
  ##【推測】
14
14
 
15
- ・user_idの値ていない
15
+ ・user_idの値すはずなのにgym_idの値を渡ししまって
16
-
17
-
18
-
19
- ・gym_idである2の値は渡せている。
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
20
24
 
21
25
 
22
26
 

5

a

2020/06/04 03:36

投稿

NEMOTOSHOTA
NEMOTOSHOTA

スコア32

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  下記のエラーが表示されています。
8
8
 
9
- ![イメージ説明](062713f532f8bb9ee56eb52f480265c5.png)
9
+ ![イメージ説明](5869f4dd953a07bf7d18417c74e786ce.png)
10
10
 
11
11
 
12
12
 

4

s

2020/06/04 03:33

投稿

NEMOTOSHOTA
NEMOTOSHOTA

スコア32

test CHANGED
File without changes
test CHANGED
@@ -282,7 +282,7 @@
282
282
 
283
283
 
284
284
 
285
-
285
+  
286
286
 
287
287
  app/controllers/relationships_controller.rb
288
288
 

3

sz

2020/06/04 03:24

投稿

NEMOTOSHOTA
NEMOTOSHOTA

スコア32

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,11 @@
12
12
 
13
13
  ##【推測】
14
14
 
15
+ ・user_idの値が渡せていない。
16
+
17
+
18
+
15
- user_idである2の値は渡せている。
19
+ gym_idである2の値は渡せている。
16
20
 
17
21
 
18
22
 

2

2020/06/04 03:19

投稿

NEMOTOSHOTA
NEMOTOSHOTA

スコア32

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,7 @@
1
1
  現在、下記記事を参考にしてフォロー機能を実装しています。
2
2
 
3
+ https://qiita.com/mitsumitsu1128/items/e41e2ff37f143db81897#relationships%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%82%92%E4%BD%9C%E6%88%90%E7%B7%A8%E9%9B%86
4
+
3
5
 
4
6
 
5
7
  下記のエラーが表示されています。

1

s

2020/06/04 02:32

投稿

NEMOTOSHOTA
NEMOTOSHOTA

スコア32

test CHANGED
File without changes
test CHANGED
@@ -24,6 +24,10 @@
24
24
 
25
25
 
26
26
 
27
+ ##コード
28
+
29
+
30
+
27
31
  フォローボタンを配置したい場所はgymコントローラのshowアクションになります。
28
32
 
29
33
  views/gyms/show.html.erb