最新的Active_Model_Serializers打破了设计视图

时间:2013-03-25 16:04:00

标签: ruby-on-rails ruby devise active-model-serializers

我正在对我们的一个客户使用的Rails应用程序进行一些更新。

简而言之,它依赖于Devise进行身份验证,而Active Model Serializers则用于在我们的API中序列化数据。

当前版本使用a fork of Active Model Serializers,这是一个相当旧的版本。我在最新版本的Active Model Serializers中需要一些功能,因此我更改了gem以查看master。方便的是,fork的更改已经添加到最新版本的AMS中,所以我改变了语法,一切都很好。

然而,一旦我退出网站并重新登录,我意识到某些事情已经破裂。正如所料,已注销的用户被重定向到/ users / sign_in。但是,自宝石更新以来,该页面现在是空白的 - 没有标题,没有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)

任何人都有一些暗示,为什么我的意见突然一片空白?

其他信息

我不确定这是否相关,但它也很有趣。我尝试了cURLing / 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

1 个答案:

答案 0 :(得分:0)

嗯,我发布问题时不可避免地会立即找到答案。

Apparently默认情况下,最新版本的Devise只有respond_to {。}}。

正常的问题是人们无法让Devise的JSON视图起作用。出于某种原因 - 可能是由于代码库混乱 - 对我来说恰恰相反。为解决此问题,我将以下内容添加到应用程序控制器中。

:html

现在,再一次,一切都很好。