我有一个Rails 4应用程序与外部支付网关通信,处理完付款后(不是对我的请求的响应,而是对我的应用程序中的端点进行POST)。
此端点有一个只处理json的控制器,但每次外部API命中端点时,我都会在服务器日志中收到错误,说它无法找到该操作的模板,尽管其他一切正常并且app正确处理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]}
如何告诉Rails我只想在没有任何模板的情况下发送json响应?
答案 0 :(得分:0)
您可以从路线本身设置默认值。只需将defaults.format
属性设置为:json
:
match 'callback', to: 'gateway#callback', via: [:post], as: :gateway_callback,
defaults: { format: :json } # <- Added line of code