2013-02-20 57 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

首先 - 您可能只有一名工人,忙于处理此请求,因此无法响应第二个请求。尝试在一个线程中创建帖子,或者使用多个工作者。

第二 - 为什么你发布到应用程序本身?为什么不干涸代码,从其他操作提取所需的代码到一个方法,并在两个地方调用它?