我刚刚对使用 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(使用前将#替换为@)