2016-05-25 10 views
1

私は、支払いを処理した後(私の要求への応答ではなく、アプリケーションのエンドポイントへのPOSTを伴う)外部支払いゲートウェイと通話するRails 4アプリを持っています。テンプレートを探すことなくRails 4の外部APIコールバックに応答するには?

このエンドポイントにはjsonのみを扱うコントローラーがありますが、外部APIがエンドポイントにヒットするたびに、サーバーログにアクションのテンプレートが見つからないというエラーが表示されますjson本体を正しく処理してください。

これが私のルートです:これは私のコントローラ(省略)である

match 'callback', to: 'gateway#callback', via: [:post], as: :gateway_callback 

class GatewayController < ApplicationController 

respond_to :json 

    def callback 
    if params && params[:event] 
     case params[:event] 
     when ... (several cases identical to this one) 

     when 'PAYMENT.AUTHORIZED' 
     payment_authorized(params) 
     render json: { status: 200 } 
     else 
     render json: { status: 406 } 
     end 
    end 
    end 

応答が正しく

{ 
    "status": 200 
} 

そしてpayment_authorizedをレンダリングし、それが持っているものありません行う。しかし私のサーバーは叫ぶ:

ActionView::MissingTemplate (Missing template gateway/callback, application/callback with {:locale=>[:"pt-BR", :pt], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builde 
r, :raw, :ruby, :coffee, :haml, :jbuilder]} 

私はどのようなテンプレートなしでjson応答を送信するだけであることをRailsに伝えたいのですか?

答えて

0

ルート自体からデフォルトを設定できます。 defaults.format属性を:jsonに設定するだけです:

match 'callback', to: 'gateway#callback', via: [:post], as: :gateway_callback, 
        defaults: { format: :json }  # <- Added line of code 
+0

これで解決しました。本当にありがとう! –

関連する問題