2017-11-06 6 views
0

JSONAPI :: ResourceControllerコントローラーでcreateアクションをオーバーライドすることで、独自のオブジェクト作成ロジックを実装しました。カスタムコントローラーアクションでjsonapi-resourcesレスポンスをレンダリングするには?

作成が成功した後、作成したオブジェクト表現を表示する必要があります。

jsonapi-resources gemを使用して、自動的に生成されたJSON APIレスポンスをレンダリングする方法はありますか?

スーパーメソッドを呼び出すと、デフォルトのリソース作成ロジックがトリガされるので、これはうまくいきません。

class Api::V1::TransactionsController < JSONAPI::ResourceController 
    def create 
    @transaction = Transaction.create_from_api_request(request.headers, params) 

    # render automatic generated JSON API response (object representation) 
    end 
end 

答えて

0
render json: JSON.pretty_generate(JSON.parse @transaction)
0
def render_json 
    result = 
    begin 
     block_given? ? { success: true, data: yield } : { success: true } 
    rescue => e 
     json_error_response(e) 
    end 

    render json: result.to_json 
end 

def json_error_response(e) 
    Rails.logger.error(e.message) 

    response = { success: false, errors: e.message } 

    render json: response.to_json 
end 

render_json { values } 
+0

これはJSONレスポンスをレンダリングしませんしかし、それは単純なJSONです。 JSON API標準に準拠していません。 jsonapi-resources gemは、リッチなJSON APIレスポンス(リンク、属性、リレーションシップ)を自動的に生成します。 – Laugslander

+0

ああ申し訳ありませんが、私はこの宝石を知りません質問を誤解 –

0

あなたはこのような何かを行うことができます:

class UsersController < JSONAPI::ResourceController 
    def create 
    user = create_user_from(request_params) 

    render json: serialize_user(user) 
    end 

    def serialize_user(user) 
    JSONAPI::ResourceSerializer 
      .new(UserResource) 
      .serialize_to_hash(UserResource.new(user, nil)) 
    end 
end 

あなたはJjsonapi規格に準拠したJSONレスポンスを取得します。この方法を

関連する問題