Rails-API在API :: V1 :: Controller#index中获取AbstractController :: DoubleRenderError

时间:2016-05-03 17:49:33

标签: ruby-on-rails json api

嘿我正在研究一个简单的API,它从数据库获取信息并将其作为JSON对象返回,并且它不会退出正常工作。我一直在说:

  

Abstract ::在API :: V1 :: BusinessesController #index中的DoubleRenderError   在此操作中多次调用渲染和/或重定向。请注意,您只能调用渲染或重定向,每次操作最多一次。另请注意,重定向和呈现都不会终止执行操作,因此如果要在重定向后退出操作,则需要执行类似“redirect_to(...)并返回”的操作。

class API::V1::BusinessesController < ApplicationController
  # GET /businesses
  def index
    @businesses = Business.all

    render json: @businesses, status: :ok
    paginate json: @businesses, per_page: 50
  end

  # GET /business/#
  def show
    @business = Business.find(params[:id])

    render json: @business, status: :ok
  end
end

同样当我$curl -H "Content-Type: application/json" http://localhost:3000/api/v1/businesses/1时,我只返回{"business":{"id":1}}而不是整个json对象,应该是{"business":{id:1, name:costco, etc}}

如果需要更多信息,请告诉我,完整的回购是在github.com/dmonaco05/business-api谢谢。

1 个答案:

答案 0 :(得分:1)

第一个问题是因为您的控制器中有renderpaginate。选择一个。

def index
  @businesses = Business.all
  paginate json: @businesses, per_page: 50
end

第二个问题在于您的序列化程序。将所有必填字段添加到UserSerializer或删除该类以使其正常运行。

class BusinessSerializer < ActiveModel::Serializer
  attributes :id, :name, etc.
end