嘿我正在研究一个简单的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谢谢。
答案 0 :(得分:1)
第一个问题是因为您的控制器中有render
和paginate
。选择一个。
def index
@businesses = Business.all
paginate json: @businesses, per_page: 50
end
第二个问题在于您的序列化程序。将所有必填字段添加到UserSerializer
或删除该类以使其正常运行。
class BusinessSerializer < ActiveModel::Serializer
attributes :id, :name, etc.
end