フロントのreact側でgetリクエストし、railsでdataを生成して、json形式に変換し、
フロント側に返す処理をしているのですが、データをうまくjson形式でフロント側に渡せません。
どなたか問題の原因が分かる方おりましたらご教授お願い致します
rails側
ruby:app/controllers/api/v1/line_foods_controller.rb
1module Api 2 module V1 3 class LineFoodsController < ApplicationController 4 before_action :set_food, only: %i[create replace] 5 6 def index 7 line_foods = LineFood.active 8 9 p line_foods[0].restaurant 10##上のコードよりサーバー上で下記のデータが出力される 11###<Restaurant id: 1, name: "testレストラン_0", fee: 100, 12## time_required: 10, created_at: "2021-06-05 07:45:03", 13##updated_at: "2021-06-05 07:45:03"> 14 15 if line_foods.exists? 16 render json: { 17 line_food_ids: line_foods.map { |line_food|line_food.id }, 18 19 ##上記で出力されてるデータをrestaurantに格納している⬇️ 20 restaurant: line_foods[0].restaurant, 21 22 count: line_foods.sum { |line_food| line_food[:count] }, 23 amount: line_foods.sum { |line_food| line_food.total_amount }, 24 }, status: :ok 25 else 26 render json: {}, status: :no_content 27 end 28 end 29 private 30 31 def set_food 32 @ordered_food = Food.find(params[:food_id]) 33 end 34 35 36 end 37 end 38end
フロント側
javascript:frontend/src/containers/Order.jsx
1import React, { Fragment,useEffect } from 'react'; 2 3import { fetchLineFoods } from '../apis/line_foods'; 4 5export const Orders = () => { 6 useEffect(() => { 7 fetchLineFoods() 8 .then((data) => 9 console.log(data) 10 ) 11 .catch((e) => console.error(e)); 12 }, []) 13 return ( 14 <Fragment> 15 注文画面 16 17 </Fragment> 18 ) 19}
フロント側のconsoleでの出力結果⬇️
上記の写真で表されているようにline_foods[0].restaurant の中身がうまく渡せていません
試したこと
フロント側でconsole.log(typeof(data.restaurant))
をしてresutaurantの型を出力したところstringと出ました
line_foods[0].restaurantをline_foods[0].restaurant.to_json()
に変換して渡してみました。
すると結果は下記のようになったのですが、文字型と認識されてしまっている?からか、出力結果がおかしくなっております
line_foods[0].restaurantをline_foods[0].restaurant.to_json()に変換した場合の出力結果⬇️
回答1件
あなたの回答
tips
プレビュー