2014-06-13 32 views
0

我已經將我的生產軌應用程序生活了幾個月,現在沒有任何問題。我沒有作最近(而不是幾天)有大的變化,然後今天早上,空氣制動拋出一堆錯誤的特定回調,我說:Rails在不改變任何內容的情況下拋出一個丟失的模板錯誤

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)的圖...但現在它說我需要一個。這是怎麼回事?

+1

這裏有一個猜測:無論出於何種原因,您的'if company && customer'語句返回false會導致錯誤'puts',但不會調用render。也許嘗試在'puts'後面調用'render nothing:true,status:422'。 – jakenberg

+0

@ jsksma2但爲什麼此代碼工作2個月,今天早上隨機停止工作? –

+0

我不確定,但如果你看看你的方法,對於第一個if語句,如果沒有forwarding_number,那麼你的第二個if語句沒有得到執行,並且沒有其他的塊,所以導軌必須尋找它的相應視圖 – Mandeep

回答

0

我想,這是你第一次有錯誤。
如果發生錯誤,則用put輸出錯誤。
在動作結束時,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後返回:

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 

+0

它似乎通過只是創建一個空的receive_call.html.haml文件...它現在可以工作......很奇怪......不知道是什麼改變了原因的 –

+0

,然後有*東西*當行動沒有任何結果顯式渲染。 –

相關問題