我正在尝试从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。
答案 0 :(得分:0)
此处提供的解决方案:destroy_user_session_path is triggering GET instead of DELETE in Rails对我而言,
即在devise.rb中使用config.sign_out_via = :get