質問編集履歴

3

読みにくい箇所の修正

2021/05/02 05:20

投稿

fujitopro
fujitopro

スコア1

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
- review_controller内で、dogfoodのIDを入手する
465
+ - **review_controller内で、dogfoodのIDを入手する**
464
-
466
+
465
- render jsonを複数遅れるようにする
467
+ - **render jsonを複数遅れるようにする**
466
-
468
+
469
+
470
+
467
- 上記の方法のどちらか、上手くいく方法がないか調べているところです。
471
+ 上記の方法のどちらか、上手くいく方法がないか調べているところです。
468
472
 
469
473
 
470
474
 

2

試してみたことの追加

2021/05/02 05:20

投稿

fujitopro
fujitopro

スコア1

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

タイトルの変更

2021/05/02 05:14

投稿

fujitopro
fujitopro

スコア1

test CHANGED
@@ -1 +1 @@
1
- 【Rails×Vue】レビューを表示させようとると、404エラーが表示される問題
1
+ 【Rails×Vue】レビュー機能実装したいので、404エラーが表示されてしまいます
test CHANGED
@@ -1,4 +1,4 @@
1
- ### 商品をレビューできるようにしたい
1
+ ### 商品をレビューできるようにしたいです
2
2
 
3
3
 
4
4