2016-05-03 10 views
0

Hey私はDBから情報を取り出し、それをJSONオブジェクトとして返し、正常に終了しない単純なAPIに取り組んでいます。Rails-API AbstractController :: API :: V1 :: Controller#index

をAbstractController :: APIでDoubleRenderError :: V1 :: BusinessesController#インデックス がこのアクション内で複数回呼び出されたレンダリングおよび/またはリダイレクト:私は入れません。レンダリングまたはリダイレクトを呼び出すことができるのは1回の操作につき1回だけです。また、リダイレクトもレンダリングもアクションの実行を終了させないので、リダイレクト後にアクションを終了するには、 "redirect_to(...)and return"のような処理が必要です。

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, name:costco, etc}}

はちょうど私に知らせなければなりません全体JSONオブジェクトの代わりに返さ{"business":{"id":1}}を取得し、完全なレポはgithub.comであります/ dmonaco05/business-apiありがとうございました。

答えて

1

コントローラにrenderpaginateがあるため、最初の問題が発生します。 1つを選択します。

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

2番目の問題はシリアライザにあります。必要なフィールドをすべてUserSerializerに追加するか、クラスを削除して正常に動作するようにします。

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

ありがとうございます! このレスポンスを見たときにシリアライザ部分を見つけただけです。 – Dom