【发布时间】: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_ujs,require jquery_ujs在application.js文件中。然后预编译资产。 -
你的意思是它是一个带有设计的 JS 东西吗?我暂时不用rails_ujs
-
链接所在的模板 (html.erb)。
标签: ruby-on-rails heroku devise ruby-on-rails-5