2014-01-09 21 views
0

使用Devise會話銷燬失敗。 但如果我重寫<%= javascript_include_tag :application %><%= javascript_include_tag :all %>如果沒有`javascript_include_tag:all`,則設計註銷失敗

但據我所知,後一種方法現在已被棄用。 我禁用了渦輪鏈接,我的配置就像這些。

的config/routes.rb中

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

應用程序/資產/ Java腳本/ 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] "https://stackoverflow.com/users/logout"):

我想<%= javascript_include_tag :application %>一樣的是<%= javascript_include_tag :all %>如果我寫的application.js正確。

我不知道爲什麼會發生這種情況,以及如何解決這個問題? 我不想使用已棄用的:all方法。

+0

模擬'delete'請求,rails需要一些javascript。所以,如果你刪除所有的JavaScript,沒有更多的鏈接與刪除 – apneadiving

+0

如果代碼中存在'<%= javascript_include_tag:application%>',所有JavaScript都加載,不是嗎? – ironsand

+0

您在application.js中聲明的所有內容 – apneadiving

回答

0

它看起來像Rails沒有找到路線。您可以在devise.rb檢查配置

config.sign_out_via = :delete 

我覺得默認「:刪除」如果色器件版本不是很老了。但是,它可能是「:GET」,如果是「:得到」,要麼你改變配置來

config.sign_out_via = :delete 

或更改註銷鏈接

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

或者無論什麼時候,都使用「:get」來拍攝。

+0

感謝':get'正常工作。但是,我找不到':delete'不起作用的原因。 – ironsand

+0

我想我使用「:delete」一次,它可以工作,但我忘記了什麼是額外的工作要做,也許配置路線?我記得使用「:刪除」會發生一些問題,並且「:get」總是正常工作,所以最後我用「:get」。 – lalameat