2013-07-19 115 views
0

我正在创建一个应用程序,它具有基于外部API和登录/注册方法的身份验证。我有一个简单的控制器RegistrationsController,它使用Curb来触发一个请求。为什么我会得到一个重复的路边请求?

这是控制器:

class RegistrationsController < ApplicationController 
    def new 
    end 

    def create 
    if params[:user][:email].present? && params[:user][:password].present? && params[:user][:phone].present? && params[:user][:login].present? 
     # API request 
     password = params[:user][:password] 
     body = { 
     "register" => { 
      "password" => password, 
      "email" => params[:user][:email], 
      "phone" => params[:user][:phone], 
      "login" => params[:user][:login] 
     } 
     } 

     c = Curl::Easy.http_post("http://domain.com/register", body.to_json 
    ) do |curl| 
     curl.headers['Content-Type'] = 'application/json' 
     curl.headers['application'] = 'appname' 
     curl.headers['device'] = 'www' 
     end 

     c.perform 
     response_body = JSON.parse(c.body_str) 

     throw response_body # This line ALLWAYS gives me 'login taken' error 
     return 
    else 
     @user = User.new(params[:user]) 
     render action: "new", notice: 'Error' 
    end 
    end 
end 

(我也有一个views/registrations/new.html.slim视图用一个简单的形式,但它现在并不重要。)

我的路线是这样的:

match 'users/sign_up' => 'registrations#new', :via => :get, :as => :user_register 
match 'users/sign_up' => 'registrations#create', :via => :post, :as => :user_create 

我的应用程序在单击registrations#new页面上的“注册”按钮后,会触发两次“限制”请求。因此,我总是会收到“登录”错误。用户注册成功,但我没有从第一个请求中得到任何结果,仅从第二个请求中获得结果。

它以某种方式通过滑轨造成的,我100%肯定它,因为它可以在该请求被触发两次API服务器日志中可以看出。另外,我使用PHP编写的完全相同的脚本,并且在那里注册工作正常。

在我的Rails开发者控制台,该请求被触发只是一个时间,所以这是很奇怪的。

有没有人知道这里发生了什么?

回答

0

我找到了答案。

如果有人有类似的东西斗争,它是由c.perform线引起的。只要删除它,它会正常工作。

我应该在将来更好地研究文档。

相关问题