在heroku上设计destroy_user_session_path

时间:2018-04-03 14:01:33

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

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

问题是heroku会在GET <%= link_to 'Logout', destroy_user_session_path, method: :delete %>

中转换此/users/sign_out

我按照Devise destroy_user_session_path does'nt work

的建议尝试了此<%= link_to 'Logout', destroy_user_session_path, method: :delete, :data => { :no_turbolink => true } %>

我找到了一些回复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'

这些宝石在其他情况下可能很有用,但不是我的(我也有链接到不存在的图像的问题)。

  

修改

这是我的完整模板

<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。

1 个答案:

答案 0 :(得分:0)

此处提供的解决方案:destroy_user_session_path is triggering GET instead of DELETE in Rails对我而言, 即在devise.rb中使用config.sign_out_via = :get

相关问题