如果没有`javascript_include_tag:all`,则设计注销失败

时间:2014-01-09 06:41:55

标签: ruby-on-rails devise

使用Devise失败的会话销毁。 但是,如果我将<%= javascript_include_tag :application %>重写为<%= javascript_include_tag :all %>

但据我所知,后一种方式现已被弃用。 我禁用了turbolinks,我的配置就像这些。

配置/ routes.rb中

devise_for :users, path_names: {sign_in: "login", sign_out: "logout"}, controllers: { omniauth_callbacks: "omniauth_callbacks" }

应用程序/资产/ Javascript角/ application.js中

//= require jquery
//= require jquery_ujs
//= require foundation
//= require_tree .

$(function(){ $(document).foundation(); });

和退出链接。

<%= link_to "log out", destroy_user_session_path, method: :delete %>

,错误讯息为ActionController::RoutingError (No route matches [DELETE] "/users/logout"):

如果我正确编写application.js,我认为<%= javascript_include_tag :application %><%= javascript_include_tag :all %>相同。

我不知道为什么会这样,以及如何解决这个问题? 我不想使用弃用的:all方法。

1 个答案:

答案 0 :(得分:0)

看起来Rails没有找到路线。如果配置

,您可以检查devise.rb
config.sign_out_via = :delete

如果设计版本不是很老,我认为默认为“:delete”。但它可能是“:get”,如果是“:get”,要么将配置更改为

config.sign_out_via = :delete

或将注销链接更改为

<%= link_to "log out", destroy_user_session_path, method: :get %>

或者无论如何,都使用“:得到”来拍摄。