NoMethodError users_url with devise(ajax)

时间:2013-01-27 12:43:34

标签: ruby-on-rails devise

我使用带有rails 3.2.11的设计2.2.2

我将设计用于ajax请求

我在initializers/devise.rb

中更改了以下配置
config.navigational_formats = [:json, :html]
config.http_authenticatable_on_xhr = false

当我在请求中提交一个空符号时,我希望得到一个带有错误哈希的json响应,但我得到一个500而不是(请参阅下面的跟踪)(它适用于注册请求)

这是我的路线(没什么特别的)

devise_for :users

追踪:

Started POST "/users/sign_in.json" for 127.0.0.1 at 2013-01-27 13:33:45 +0100
Processing by Devise::SessionsController#create as JSON
  Parameters: {"user"=>{"email"=>"", "password"=>"[FILTERED]"}}
Completed 401 Unauthorized in 1ms
Processing by Devise::SessionsController#new as JSON
  Parameters: {"user"=>{"email"=>"", "password"=>"[FILTERED]"}}
Completed 500 Internal Server Error in 40ms

NoMethodError (undefined method `users_url' for #<Devise::SessionsController:0x007fe88ddd9550>):

1 个答案:

答案 0 :(得分:0)

您可能覆盖了after_sign_in_path_for,并且其中有一个返回nil的代码路径。

这会导致设备退回其默认行为,并调用users_url以获取重定向到的路径。

我为什么这么认为?因为您遇到的是我遇到的相同错误(并且丢失了一些头发),并且this bug report包含许多其他对此问题感到沮丧的人的github用户名。