我正在对我们的一位客户使用的 Rails 应用程序进行一些更新。
长话短说,它依赖于 Devise 进行身份验证和 Active Model Serializers 来序列化我们 API 中的数据。
当前版本使用Active Model Serializers 的一个分支,这是一个相当旧的版本。我需要最新版本的 Active Model Serializers 中的一些功能,所以我将 gem 更改为查看master。方便的是,fork 中的更改已添加到 AMS 的最新版本中,因此我更改了语法,一切看起来都很好。
但是,一旦我退出该站点并重新登录,我就意识到有些东西非常糟糕。正如预期的那样,注销的用户会被重定向到 /users/sign_in。然而,自从 gem 更新以来,该页面现在是空白的 - 没有标题,没有 HTML,什么都没有。只是白色。我恢复到旧版本的 gem 以确认这是问题所在,并且 /users/sign_in 页面运行良好。
检查我的 rails 调试输出,我显示以下内容:
Started GET "/users/sign_in" for 127.0.0.1 at 2013-03-25 11:15:05 -0500
Processing by Devise::SessionsController#new as HTML
Completed 406 Not Acceptable in 76ms (ActiveRecord: 2.1ms)
有人对为什么我的观点突然空白有一些提示吗?
附加信息
我不确定这是否相关,但这也很有趣。我尝试卷曲 /users/sign_in 页面,并在 cURL 上得到 JSON 响应。
{"user":{"id":null,"email":"","name":null}}
这不是在普通浏览器上实现的。
__
在我的路线中,我有以下行将 Devise 映射到 /users,并覆盖注册控制器。
devise_for :users, :controllers => { :registrations => 'registrations'}
注册控制器如下所示:
class RegistrationsController < Devise::RegistrationsController
before_filter :authenticate_user!, :redirect_unless_admin
private
def redirect_unless_admin
unless current_user && current_user.admin?
redirect_to root_path
end
end
end