【问题标题】:Devise destroy_user_session_path on heroku在heroku上设计销毁_user_ session_path
【发布时间】:2018-04-03 14:01:33
【问题描述】:

我正在尝试从 heroku 生产中的(测试)站点中注销用户。

问题是 heroku 将这个 <%= link_to 'Logout', destroy_user_session_path, method: :delete %> 转换为 GET /users/sign_out

我已经按照这里的建议 <%= link_to 'Logout', destroy_user_session_path, method: :delete, :data => { :no_turbolink => true } %> 尝试过 Devise destroy_user_session_path does'nt work

我在回复 destroy_user_session_path is triggering GET instead of DELETE in Rails 时找到了一些解决方案,但我对这些答案感到不舒服,因为我想避免 GET。

注销在开发中是好的,所以我检查了https://devcenter.heroku.com/ 并进行了一些修改,但我仍然卡住了。 我在资产管道上工作并添加了这些宝石:

gem 'rails_serve_static_assets'
gem 'rails_stdout_logging'

这些 gem 在其他情况下可能有用,但不是我的(我也有一个问题,指向不持久的图像的链接)。

编辑

这是我的完整模板

<div class="" style="background-color: #1a252f;">
    <ul class="nav justify-content-center">
    <% if user_signed_in? %>
        <li class="nav-item">
        <%= link_to 'Edit account|', edit_user_registration_path %></li>
        <li class="nav-item">
        <%= link_to 'Logout', destroy_user_session_path, method: :delete, :data => { :no_turbolink => true } %></li>
      <% else %>
         <li class="nav-item">
         <%= link_to 'Login', new_user_session_path %></li>
      <% end %>
    </ul>
  </div>

编辑 2

我也在 routes.rb 中试过这个:

devise_for :users do
  get "/users/sign_out" => "devise/sessions#destroy", :as => :destroy_user_session
end

我仍然在 heroku 日志中得到状态 404。

【问题讨论】:

  • 请给我们看看你的完整模板好吗?
  • 你是指哪个模板?
  • 而不是 rails_ujsrequire jquery_ujsapplication.js 文件中。然后预编译资产。
  • 你的意思是它是一个带有设计的 JS 东西吗?我暂时不用rails_ujs
  • 链接所在的模板 (html.erb)。

标签: ruby-on-rails heroku devise ruby-on-rails-5


【解决方案1】:

这里提供的解决方案:destroy_user_session_path is triggering GET instead of DELETE in Rails 适合我, 即在 devise.rb 中使用 config.sign_out_via = :get

【讨论】:

    猜你喜欢
    • 2011-11-29
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2014-12-22
    相关资源
    最近更新 更多