【问题标题】:Ember.js with devise on rails application : 406 Not Acceptable on sign upEmber.js 在 Rails 应用程序上设计:406 Not Acceptable on sign up
【发布时间】:2013-01-14 14:00:34
【问题描述】:

我使用 Devise 设置了一个 rails 3.2.11 应用程序进行身份验证。 我想用ember.js作为mvc框架。

当我对 POST /users.json 路由发起 ajax 调用时,我得到一个 406 Not Acceptable。

这是我的 ajax 调用:

urlBase : '/users'

signup : (username, email, password, passwordConfirmation) ->
  $.ajax
    url: "#{@.get('urlBase')}.json"
    type: "POST"
    dataType: "json"
    data:
      "user[username]": username
      "user[email]": email
      "user[password]": password
      "user[password_confirmation]": passwordConfirmation

    success: (data) ->
      alert('Completed sign up process: '+ JSON.stringify(data));
      @errorMsg = "Signed up successfully." 

    error: (jqXHR, textStatus, errorThrown) ->
      alert "Error completing sign up: " + textStatus + " error: " + errorThrown

这里是日志:

Started POST "/users.json" for 127.0.0.1 at 2013-01-14 14:38:57 +0100
Processing by Devise::RegistrationsController#create as JSON
  Parameters: {"user"=>{"username"=>"obo", "email"=>"obo@obo.dv", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}}
   (1.3ms)  begin transaction
  User Exists (1.3ms)  SELECT 1 AS one FROM "users" WHERE "users"."email" = 'obo@obo.dv' LIMIT 1
   (0.1ms)  rollback transaction
Completed 406 Not Acceptable in 311ms (ActiveRecord: 2.6ms)

我不明白为什么会这样。

【问题讨论】:

    标签: ajax ruby-on-rails-3 devise ember.js


    【解决方案1】:

    您使用的是什么版本的 Devise?

    上周我在意外升级到 Devise 2.2.0 后遇到了类似的问题。该版本中进行了一些向后不兼容的更改,包括使DeviseController 默认只响应HTML 的更改。不过,您可以添加其他格式,例如 JSON,这应该可以解决您的问题。

    阅读有关设计更改的信息on their changelog on Github。如果您不想这样做,请尝试降级到 Devise 2.1.2,这是我暂时做的。

    【讨论】:

    • 我相信它在更新日志中有概述。我相信它说使用DeviseController.respond_to 添加新格式。我自己还没有做过,所以我不能从我的经验中给你任何例子。
    【解决方案2】:

    Zajn 的回答解释说 DeviseController 现在只响应 HTML 格式(从 2.2.0 版开始)。 changelog 表示将 JSON 格式添加到 DeviseController.respond_to。

    我将 SessionsController 和 RegistrationsController 子类化并添加了 respond_to :json :

    class RegistrationsController < Devise::RegistrationsController
      respond_to :json
    end
    
    class SessionsController < Devise::RegistrationsController
      respond_to :json
    end
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2017-05-25
    • 2018-07-15
    • 2018-07-31
    • 2013-08-10
    • 2016-12-01
    相关资源
    最近更新 更多