路由错误:没有路由匹配[GET]“/ users / sign_out” - 设计4.1

时间:2016-06-26 05:29:13

标签: ruby devise ruby-on-rails-4.2

所以我一直在创建我的webapp并遇到了Devise的问题。这是我的不同文件。

devise.rb文件

config.sign_out_via = :delete
config.sign_out_via = :get if Rails.env.test?

index.html.erb文件

<li>
   <%= link_to "Logout", destroy_user_session_path, :method => :delete %>
</li>

routes.rb文件

devise_for :users do
  get '/users/sign_out' => 'devise/sessions#destroy'
end

问题是如果我在我的网络应用程序上按“注销”,我会立即得到:

No route matches [GET] "/users/sign_out"

当我运行rake路线时| grep destroy_user,这是响应。

destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy

不确定是什么问题。我该如何解决?我正在使用rails 4.2.1 / devise 4.1.1。提前谢谢。

3 个答案:

答案 0 :(得分:1)

如果您在使用<div class="common"> Common </div> <div class="user-panel" bind-to=".common"> User Panel </div> 进行请求时遇到错误,并且看到method: :delete,那么加载UJS文件通常会出现问题。

确保Matches [GET]已正确打包并正在加载jQuery以及正常运行所需的其他Rails JavaScript。

答案 1 :(得分:0)

我有同样的问题。我通过在application.js

中替换此问题来解决此问题
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .

使用:

//= require jquery_ujs
//= require jquery
//= require turbolinks
//= require_tree .

就这么简单:)

答案 2 :(得分:0)

我有一个类似的问题 - 对我而言,我根本没有加载jquery_ujs。 (我在最新版本的bootstrap中遇到了js的一些问题,决定从CDN获得我需要的所有内容,注释掉我的application.js,其中包含对jquery_ujs的引用。