退出无法在 Heroku 上工作 - 使用 Devise gem 和 Rails 4

2024-06-26

我刚刚对使用 Devise 进行身份验证的 Rails 4 应用程序进行了初始部署到 Heroku。注销可以在本地进行,但 Heroku 返回错误“您正在查找的页面不存在”,并且不会注销用户。

根据 Heroku 日志和 Google/SO 搜索,看起来原因是 Heroku 使用 GET 请求而不是 DELETE - 尽管我的应用程序代码指定了链接的 :delete 方法,并且 Devise 使用 DELETE 进行注销默认。有些文章建议 Heroku 使用 GET,以便用户可以在不启用 JavaScript 的情况下注销,但我的代码中有 JS include 标记,并且我的浏览器中启用了 JS。 (我已经使用 Chrome 和 Safari 进行了检查。)

我找到了更改配置的说明,以便 Devise 使用 :get 而不是 :delete,但如果可能的话,我更愿意使用更安全的 :delete 方法。

感谢到目前为止的想法。回答您的问题:

这是我的链接:

<%= link_to "Log out", destroy_admin_session_path, method: :delete %>

这是我在 head 标签中加载 javascript 的内容:

  <%= javascript_include_tag "application", "data-turbolinks-track" => true %>

控制台中没有报告任何 JS 错误。


我找到了解决方案。问题是 Rails 4 处理资源的方式与 Rails 3 不同。默认情况下,Rails 4 不提供静态资源。您可以通过设置在 config/application.rb 中手动更改此设置:

config.serve_static_assets = true

另一种选择(也是 Heroku 推荐的选择)是使用rails_12factor gem。将其添加到您的 Gemfile 并运行捆绑安装将为您进行调整,并将您的记录器设置为标准输出。它可以与 Rails 3 和 Rails 4 一起使用。

gem 'rails_12factor', group: :production

我选择使用宝石。在我运行捆绑安装、提交更改并重新部署后 - 我的注销链接工作正常,无需更改方法。之后我的scss文件也被准确地编译和实现了。 (我之前没有对样式做过任何事情,所以我没有意识到这是一个问题。有趣的是,遇到新问题如何有助于找到解决方案......)

以下是对我有帮助的资源:

https://devcenter.heroku.com/articles/rails-4-asset-pipeline https://devcenter.heroku.com/articles/rails-4-asset-pipeline

https://github.com/heroku/rails_12factor https://github.com/heroku/rails_12factor

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

退出无法在 Heroku 上工作 - 使用 Devise gem 和 Rails 4 的相关文章

随机推荐

  • Wingdings/Symbol 字符与其 Unicode 等效项之间的映射

    MsWord 使用 Wingdings 和 Symbol 字符作为项目符号 默认情况下它们的十六进制值为 F0A7 和 F0B7 我想将项目符号转换为其 Unicode 等效项 当然 这取决于实际使用的字体 因此 F0A7 Wingding
  • 如何在C中复制结构体数组

    我已经定义了类似的结构 typedef struct char oidkey int showperf char oidrealvalue BUFSIZE char oidlimits struct oidpairs 我有结构数组 stru
  • 如何使用 VBA 在 Excel 2010 工作表中添加选项按钮以进行分组?

    I want to add many option button to an excel worksheet not to a VBA form and want to group them by row The result should
  • 按键时应用程序窗口恢复

    在我的应用程序中 我添加了一项功能 可以在按键时 按 ESC 或暂停 中断按钮时 将应用程序窗口最小化到系统托盘 因此 当按下它们时 窗口会最小化 有没有办法添加功能来在某些按键上恢复应用程序窗口 即使其他应用程序当前处于活动状态 例如我按
  • gRPC 服务器如何注意到客户端已取消服务器端流式调用?

    我想使用 gRPC 让客户端订阅服务器生成的事件 我有一个 RPC 声明如下 rpc Subscribe SubscribeRequest returns stream SubscribeResponse 其中返回的流是无限的 要 取消订阅
  • 背景上可见的片段

    我正在开发一个应用程序 该应用程序具有在 XML 文件中定义的三个片段 HeaderFragment MainFragment FooterFragment 第一个屏幕启动三个片段 Header 和 FooterFragment 是静态的
  • foreach 与 LINQ .ForEach() [重复]

    这个问题在这里已经有答案了 为什么LINQ ForEach需要一个List对象 而foreach声明只需要IEnumerable 我更喜欢使用foreach当有多行和单行语句的 LINQ 时 只是为了可读性 但什么是首选 为什么 为什么会有
  • 使用 Bearer Token 在 C# 中构建 post HttpClient 请求

    我并不是真正的 C 专家 我有一个 C 中的 post httpRequest 需要开发 为此我创建了这个方法 它接受一个 Uri 一个对象和一个不记名令牌 该方法旨在构建调用请求 private HttpClient client new
  • 在 SelectList 集合中设置所选项目

    我有一堂具有以下属性的课程 它构建了一个SelectList现有列表中的对象 然后设置所选项目 public SelectList ProviderTypeList get SelectList list new SelectList my
  • 卡桑德拉吃掉内存

    I have 卡桑德拉2 1并设置以下属性 MAX HEAP SIZE 5G HEAP NEWSIZE 800M memtable allocation type heap buffers top 实用程序显示 cassandra 占用了
  • 如何在 Tomcat7 中部署 Grails 3.0.1 war 文件?

    我怎样才能部署一个Grails 3 0 1Tomcat7 的非嵌入式版本中的 war 文件 我收到的只是一个空白页或 404 错误 我可以成功部署其他 war 文件 所以我知道这不是 Tomcat 的问题 我的版本以及我采取的步骤如下 Se
  • 如何使用 pandoc 将目录中的所有 .md 文件编译为单个 .pdf,同时保留 YAML 标头数据?

    我有一个 md 文档目录 每个文档都包含一个指定文档的 YAML 标头title author date categories tags等 该目录包含日记条目 文件名只是条目的日期 我使用 pandoc 为每个 md 文件生成 PDF 没有
  • 如何使用 pollingThrottle 和 pollingInterval?

    所以我的应用程序中有一些东西我不需要立即反应并找到有关属性的信息轮询节流阀 and 轮询间隔在文档中 所以这里基本上是我设法找到的有关这些属性的所有信息 pollingIntervalMs 数 仅限服务器 在服务器上观察时轮询此查询的频率
  • SSRS报告不显示数据

    我刚刚创建了 SQL Server 2005 SSRS 报告 数据未显示在预览窗格中 数据集是根据字符串参数从存储过程正确填充的 我可以在数据窗格中执行它 在预览窗格中运行报表时 会显示正确的行数 但单元格的内容不包含任何数据 源数据集基于
  • Visual Studio 代码中的“Git:gpg 未能签署数据”

    全新安装 Linux 后 我尝试设置我的环境 并且不断收到Git gpg failed to sign the data在本地提交更改时出错 我使用的是 Visual Studio Code 专有版本 而不是开源版本 gitconfig u
  • 使用 SignalR 检测“服务器离线”

    我们尝试在低带宽环境中使用 SignalR 在该环境中 与后端服务器的连接可以随机出现和消失 并且我们希望我们的 Web 应用程序能够做出适当的响应 看起来这个连接 API 在过去的一年里一直在变化 但根据最新的文档 我尝试连接 conne
  • ngTemplateOutlet - Angular 5 嵌套模板驱动表单

    我有一个从我的组件之一传递的 ng template 并且我有一个占位符来接受传递的 ng template 到我的组件上 如下 ngTemplateOutlet 中所示 div div
  • 如何构建可嵌入的 Python

    我想知道如何为 Windows 构建可嵌入的 Python 找不到该特定包的任何信息或构建配置 我问的原因是我可以在 Mac 和 Linux 上使用相同的变体 最近 我必须为 64 位 Python 3 5 6 构建一个可嵌入的 zip 因
  • 使用新内容刷新 ViewPager 时出现奇怪的问题:

    我从 Web 服务接收数据 该数据被解析为Application类 这个对象在我的例子中是一个Report类包含一个列表Tabs应该填充ViewPager 所以这个报告存储在currentReport应用程序类中的参数 每个选项卡应该是Vi
  • 退出无法在 Heroku 上工作 - 使用 Devise gem 和 Rails 4

    我刚刚对使用 Devise 进行身份验证的 Rails 4 应用程序进行了初始部署到 Heroku 注销可以在本地进行 但 Heroku 返回错误 您正在查找的页面不存在 并且不会注销用户 根据 Heroku 日志和 Google SO 搜