在Rails API for React中

时间:2018-10-11 11:47:55

标签: ruby-on-rails reactjs activerecord axios

因此,我正在构建一个具有Rails后端和React前端的Web应用程序。

在我的meals#index页面上,我想显示我的所有餐点,以及他们所关联的餐厅的名称和地址(餐点belongs_to,餐厅和餐厅has_many餐)。

我是一个经典的Rails应用,我只需编写:

<%= meal.restaurant.name %>
<%= meal.restaurant.address %>

并且查询在幕后进行。

但是对于React / Rails应用程序,我需要从控制器中获取所有数据。

那么我该如何转换索引方法:

module Api::V1
  class MealsController < ApplicationController
    def index
      @meals = Meal.order(:id)
      render json: @meals
    end
  end
end

以便它(尽可能快地)获取餐馆数据。

顺便说一句,我使用axios从rails获取数据以做出反应:

  componentDidMount() {
    axios.get('api/v1/meals.json')
    .then(response => {
        console.log(response)
        this.setState({
            meals: response.data
        })
    })
    .catch(error => console.log(error))
}

1 个答案:

答案 0 :(得分:2)

一种方法是像这样在include响应中json用餐

render json: @meals.to_json(include: :restaurant)

以上内容将生成用餐数据及其相关餐厅的数据。