Ruby on rails Rails在未更改任何内容的情况下抛出丢失模板错误
我的rails应用程序已经上线几个月了,没有任何问题。我最近(几天内)没有做任何重大更改,今天早上,airbrake针对一次特定的回调抛出了一系列错误,我说:Ruby on rails Rails在未更改任何内容的情况下抛出丢失模板错误,ruby-on-rails,twilio,Ruby On Rails,Twilio,我的rails应用程序已经上线几个月了,没有任何问题。我最近(几天内)没有做任何重大更改,今天早上,airbrake针对一次特定的回调抛出了一系列错误,我说: ActionView::MissingTemplate (Missing template calls/receive_call, application/receive_call 我最近没有在视图或路线中更改任何内容,这可能是什么原因造成的?以下是我的接收呼叫方法: def receive_call to_number
ActionView::MissingTemplate (Missing template calls/receive_call, application/receive_call
我最近没有在视图或路线中更改任何内容,这可能是什么原因造成的?以下是我的接收呼叫方法:
def receive_call
to_number = params[:To] == '+1' ? params[:Called].slice!(2..12) : params[:To].slice!(2..12)
from_number = params[:From] == '+1' ? params[:Caller].slice!(2..12) : params[:From].slice!(2..12)
company = PhoneNumber.find_by(number: to_number).company
customer = company.customers.find_or_create_by(customer_phone_number: from_number)
if company && customer
call = company.calls.create(
from: from_number,
to: to_number,
customer_id: customer.id,
call_status: params[:CallStatus],
call_sid: params[:CallSid],
forwarded_to: company.forwarding_number
)
forwarding_number = company.twilio_formatted_forwarding_number
if forwarding_number
render 'twilio/call_response.xml.haml', locals: { forwarding_number: forwarding_number }, content_type: 'text/xml'
end
else
puts 'ERROR (receive_call): company or customer couldn\'t be loaded'
end
end
我以前从未需要过这个回调的视图(来自twilio),但现在它说我需要一个。发生了什么事?我想,这是你第一次出错。
如果发生错误,您将使用puts输出错误。
在操作结束时,Rails尝试渲染标准视图,因为尚未渲染任何内容 可以将纯文本渲染为
if forwarding_number
render 'twilio/call_response.xml.haml', locals: { forwarding_number: forwarding_number }, content_type: 'text/xml'
else
render text: 'ERROR (receive_call): no forwarding number.'
end
else
render text: 'ERROR (receive_call): company or customer couldn\'t be loaded'
end
或在放置后返回
:
puts 'ERROR (receive_call): company or customer couldn\'t be loaded'
return
当然,无论是否存在错误,都应该呈现相同类型的响应(XML),所以最好这样做
render xml: {error: 'ERROR (receive_call): company or customer couldn\'t be loaded'}, status: 404
等等。这里有一个猜测:无论出于何种原因,您的
if company&customer
语句返回false,导致您将放入错误,但不调用渲染
。也许可以尝试在放置
@jsksma2之后调用render nothing:true,status:422
,但为什么这段代码工作了2个月,今天早上就随机停止工作了?我不确定,但如果你仔细研究一下你的方法,对于第一个if语句,如果没有转发号,那么第二个if语句没有执行,也没有else块,因此rails必须查找其相应的视图,如我所说,我猜if语句突然开始返回false。可能您的PhoneNumber表正在返回一个nil
对象。它似乎只是创建了一个空白的receive\u call.html.haml文件…现在可以工作了…太奇怪了…不确定是什么原因造成的更改,然后在操作结束时没有任何显式渲染,就有一些东西需要渲染。