【问题标题】:Latest Active_Model_Serializers breaks Devise Views最新的 Active_Model_Serializers 打破了设计视图
【发布时间】:2013-03-15 04:57:15
【问题描述】:

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

长话短说,它依赖于 Devise 进行身份验证和 Active Model Serializers 来序列化我们 API 中的数据。

当前版本使用a fork of 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

【问题讨论】:

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


    【解决方案1】:

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

    Apparently 最新版本的 Devise 默认情况下在 :html 上只有一个 respond_to

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

    respond_to :html
    

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

    【讨论】:

      猜你喜欢
      • 2010-11-26
      • 2022-11-22
      • 1970-01-01
      • 2012-08-04
      • 2013-04-15
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 2021-08-02
      相关资源
      最近更新 更多