質問編集履歴
3
読みにくい箇所の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -382,7 +382,7 @@
|
|
382
382
|
|
383
383
|
### 試したこと
|
384
384
|
|
385
|
-
this.getReviews()のコードを消せばエラーは消えるので、現在表示されているエラーは、getReviewsのaxiosが原因だと考えています。
|
385
|
+
~~this.getReviews()のコードを消せばエラーは消えるので、現在表示されているエラーは、getReviewsのaxiosが原因だと考えています。~~
|
386
386
|
|
387
387
|
|
388
388
|
|
@@ -402,11 +402,11 @@
|
|
402
402
|
|
403
403
|
```
|
404
404
|
|
405
|
-
params[:dogfood_id]
|
405
|
+
params[:dogfood_id]で、IDを取得できていないのでエラーが発生していたようです。
|
406
|
-
|
407
|
-
|
408
|
-
|
406
|
+
|
407
|
+
|
408
|
+
|
409
|
-
ならばと思い、sdogfood_controller.rbのshowアクションを、以下のように変更してみたのですが、render jsonを2つ記載すると、元々のrender json: @dogfoodが機能しなくなってしまい、別の問題で悩んでいます。
|
409
|
+
ならばと思い、**(sdogfood_controller.rb)のshowアクション**を、以下のように変更してみたのですが、render jsonを2つ記載すると、元々のrender json: @dogfoodが機能しなくなってしまい、別の問題で悩んでいます。
|
410
410
|
|
411
411
|
|
412
412
|
|
@@ -460,11 +460,15 @@
|
|
460
460
|
|
461
461
|
現在は、問題を解決するために
|
462
462
|
|
463
|
+
|
464
|
+
|
463
|
-
|
465
|
+
- **review_controller内で、dogfoodのIDを入手する**
|
464
|
-
|
466
|
+
|
465
|
-
|
467
|
+
- **render jsonを複数遅れるようにする**
|
466
|
-
|
468
|
+
|
469
|
+
|
470
|
+
|
467
|
-
上記の方法のどちらか
|
471
|
+
上記の方法のどちらかで、上手くいく方法がないか調べているところです。
|
468
472
|
|
469
473
|
|
470
474
|
|
2
試してみたことの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -228,18 +228,12 @@
|
|
228
228
|
|
229
229
|
```Rails
|
230
230
|
|
231
|
+
(reviews.controller)
|
232
|
+
|
231
233
|
class Api::V1::ReviewsController < ApiController
|
232
234
|
|
233
235
|
|
234
236
|
|
235
|
-
rescue_from Exception, with: :render_status_500
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
rescue_from ActiveRecord::RecordNotFound, with: :render_status_404
|
240
|
-
|
241
|
-
|
242
|
-
|
243
237
|
def index
|
244
238
|
|
245
239
|
dogfood = Dogfood.find(params[:dogfood_id])
|
@@ -280,30 +274,56 @@
|
|
280
274
|
|
281
275
|
end
|
282
276
|
|
283
|
-
|
284
|
-
|
285
|
-
def render_status_404(exception)
|
286
|
-
|
287
|
-
render json: { errors: [exception] }, status: 404
|
288
|
-
|
289
|
-
end
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
def render_status_500(exception)
|
294
|
-
|
295
|
-
render json: { errors: [exception] }, status: 500
|
296
|
-
|
297
|
-
end
|
298
|
-
|
299
|
-
|
300
|
-
|
301
277
|
end
|
302
278
|
|
303
279
|
```
|
304
280
|
|
305
281
|
|
306
282
|
|
283
|
+
```rails
|
284
|
+
|
285
|
+
(sdogfood_controller.rb)
|
286
|
+
|
287
|
+
class Api::V1::SdogfoodsController < ApiController
|
288
|
+
|
289
|
+
before_action :set_dogfood, only: [:show]
|
290
|
+
|
291
|
+
|
292
|
+
|
293
|
+
def index
|
294
|
+
|
295
|
+
dogfoods = Dogfood.select(:id, :name, :protein, :fal, :price)
|
296
|
+
|
297
|
+
render json: dogfoods
|
298
|
+
|
299
|
+
end
|
300
|
+
|
301
|
+
|
302
|
+
|
303
|
+
def show
|
304
|
+
|
305
|
+
render json: @dogfood
|
306
|
+
|
307
|
+
end
|
308
|
+
|
309
|
+
|
310
|
+
|
311
|
+
private
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
def set_dogfood
|
316
|
+
|
317
|
+
@dogfood = Dogfood.find(params[:id])
|
318
|
+
|
319
|
+
end
|
320
|
+
|
321
|
+
end
|
322
|
+
|
323
|
+
```
|
324
|
+
|
325
|
+
|
326
|
+
|
307
327
|
```Rails
|
308
328
|
|
309
329
|
(review.rb)
|
@@ -332,30 +352,134 @@
|
|
332
352
|
|
333
353
|
|
334
354
|
|
355
|
+
```
|
356
|
+
|
357
|
+
(route.rb)
|
358
|
+
|
359
|
+
Rails.application.routes.draw do
|
360
|
+
|
361
|
+
root to: 'home#index'
|
362
|
+
|
363
|
+
(省略)
|
364
|
+
|
365
|
+
namespace :api, {format: 'json'} do
|
366
|
+
|
367
|
+
namespace :v1 do
|
368
|
+
|
369
|
+
resources :sdogfoods, only: [:index, :show]
|
370
|
+
|
371
|
+
resources :reviews, except: [:update]
|
372
|
+
|
373
|
+
end
|
374
|
+
|
375
|
+
end
|
376
|
+
|
377
|
+
end
|
378
|
+
|
379
|
+
```
|
380
|
+
|
381
|
+
|
382
|
+
|
335
383
|
### 試したこと
|
336
384
|
|
337
|
-
|
338
|
-
|
339
|
-
axiosのコードの見直しや、controllerの設定などを変えてみましたが、改善することが出来ませんでした。
|
340
|
-
|
341
|
-
|
342
|
-
|
343
385
|
this.getReviews()のコードを消せばエラーは消えるので、現在表示されているエラーは、getReviewsのaxiosが原因だと考えています。
|
344
386
|
|
345
387
|
|
346
388
|
|
389
|
+
(追記)
|
390
|
+
|
391
|
+
reviews.contorollerの、以下のコードに問題があると判明しました。
|
392
|
+
|
393
|
+
```
|
394
|
+
|
395
|
+
def index
|
396
|
+
|
397
|
+
dogfood = Dogfood.find(params[:dogfood_id])
|
398
|
+
|
399
|
+
(省略)
|
400
|
+
|
401
|
+
end
|
402
|
+
|
403
|
+
```
|
404
|
+
|
405
|
+
params[:dogfood_id]が機能していないのでエラーが発生していたようです。
|
406
|
+
|
407
|
+
|
408
|
+
|
409
|
+
ならばと思い、sdogfood_controller.rbのshowアクションを、以下のように変更してみたのですが、render jsonを2つ記載すると、元々のrender json: @dogfoodが機能しなくなってしまい、別の問題で悩んでいます。
|
410
|
+
|
411
|
+
|
412
|
+
|
413
|
+
```rails
|
414
|
+
|
415
|
+
(sdogfood_controller.rb)
|
416
|
+
|
417
|
+
class Api::V1::SdogfoodsController < ApiController
|
418
|
+
|
419
|
+
before_action :set_dogfood, only: [:show]
|
420
|
+
|
421
|
+
|
422
|
+
|
423
|
+
def index
|
424
|
+
|
425
|
+
dogfoods = Dogfood.select(:id, :name, :protein, :fal, :price)
|
426
|
+
|
427
|
+
render json: dogfoods
|
428
|
+
|
429
|
+
end
|
430
|
+
|
431
|
+
|
432
|
+
|
433
|
+
def show
|
434
|
+
|
435
|
+
@reviews = @dogfood.reviews.order('created_at DESC')
|
436
|
+
|
437
|
+
render json: @dogfood
|
438
|
+
|
439
|
+
render json: @reviews
|
440
|
+
|
441
|
+
end
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
private
|
446
|
+
|
447
|
+
|
448
|
+
|
449
|
+
def set_dogfood
|
450
|
+
|
451
|
+
@dogfood = Dogfood.find(params[:id])
|
452
|
+
|
453
|
+
end
|
454
|
+
|
455
|
+
end
|
456
|
+
|
457
|
+
```
|
458
|
+
|
459
|
+
|
460
|
+
|
461
|
+
現在は、問題を解決するために
|
462
|
+
|
463
|
+
・review_controller内で、dogfoodのIDを入手する
|
464
|
+
|
465
|
+
・render jsonを複数遅れるようにする
|
466
|
+
|
467
|
+
上記の方法のどちらかが、上手くいく方法がないか調べているところです。
|
468
|
+
|
469
|
+
|
470
|
+
|
471
|
+
もし、何か分かる方がいましたら、アドバイスをいただけると助かります。
|
472
|
+
|
473
|
+
|
474
|
+
|
475
|
+
|
476
|
+
|
347
|
-
※createReviewも、送信したら以下のエラーが出ます
|
477
|
+
※createReviewも、送信したら以下のエラーが出ますが、まずgetReviesのエラーを解決しようと思い、一旦createReviewは放置している状態です
|
348
478
|
|
349
479
|
Uncaught (in promise) Error: Request failed with status code 422
|
350
480
|
|
351
481
|
|
352
482
|
|
353
|
-
まずは、getReviesのエラーを解決しようと思い、一旦createReviewは放置している状態です。
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
483
|
### 補足情報
|
360
484
|
|
361
485
|
Rails 6.0.3.5
|
1
タイトルの変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
【Rails×Vue】レビューを
|
1
|
+
【Rails×Vue】レビュー機能を実装したいのですが、404エラーが表示されてしまいます
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
### 商品をレビューできるようにしたい
|
1
|
+
### 商品をレビューできるようにしたいです
|
2
2
|
|
3
3
|
|
4
4
|
|