2013-02-20 70 views
0

的Rails 3.1.3,紅寶石1.9.3p374Rails的:從控制器

我試圖從控制器到POST(其通過POST從客戶端接收的數據,然後第一次進行一些處理)做HTTP POST到另一個之後超時控制器在應用程序中,並得到Timeout :: Error。

我一直在使用的Net :: HTTP嘗試(長下面的表格,還做了簡寫形式):

uri = URI.parse(credit_payments_url) 
http = Net::HTTP.new(uri.host, uri.port) 
request = Net::HTTP::Post.new(uri.request_uri) 
auth_token = params[:authenticity_token] 
request.set_form_data({:cc => "test", :authenticity_token => auth_token }) 
response = http.request(request) 

而且HTTParty:

auth_token = params[:authenticity_token] 
HTTParty.post(credit_payments_url, :body => {:cc => "test", :authenticity_token => auth_token}) 

在這兩種情況下,我得到的超時::錯誤,也看到這個服務器輸出:

Started POST "/payments/credit" for 127.0.0.1 at 2013-02-19 17:39:35 -0600 
    Processing by PaymentsController#credit as HTML 
    Parameters: {"cc"=>"test", "authenticity_token"=>"px+YzdbEfC5p2i3e5yjNT4EQy4WMA9aEWY/v2tfdFhA="} 
WARNING: Can't verify CSRF token authenticity 

credit_payments_url是正確的網址,有一個受文者積水路線。我一直在收到CSRF警告,所以我從原始請求中添加:authenticity_token,但CSRF警告仍顯示出來。我不確定這與POST超時有什麼關係。

我覺得可能會有一些基本的網絡或配置問題導致POST無法正常工作,但無法完全說明它是什麼。有任何想法嗎?

回答

0

首先 - 您可能只有一名工人,忙於處理此請求,因此無法響應第二個請求。嘗試在一個線程中創建帖子,或者使用多個工作者。

第二 - 爲什麼你發佈到應用程序本身?爲什麼不幹涸代碼,從其他操作提取所需的代碼到一個方法,並在兩個地方調用它?