繁体   English   中英

在heroku上设计destroy_user_session_path

[英]Devise destroy_user_session_path on heroku

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

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

我已经尝试过此<%= link_to 'Logout', destroy_user_session_path, method: :delete, :data => { :no_turbolink => true } %>如这里建议的那样, 设计destroy_user_session_path不起作用

我已经找到一些解决方案来答复destroy_user_session_path在Rails中触发GET而不是DELETE,但是我对答案不满意,因为我想避免使用GET。

可以在开发中注销,因此我检查了https://devcenter.heroku.com/并进行了一些修改,但仍然遇到问题。 我致力于资产管道,并添加了以下这些瑰宝:

gem 'rails_serve_static_assets'
gem 'rails_stdout_logging'

这些gems在其他情况下可能很有用,但对我而言却不是(我也遇到无法持久保存的图像链接)。

编辑

这是我的完整模板

<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中, destroy_user_session_path会触发GET而不是DELETE,对我来说就是这样,即使用config.sign_out_via = :get在devise.rb中获取

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM