2011-07-24 74 views
10

雖然有很多類似的問題,我已經搜索了幾個小時,但仍然無法修復它。導軌設計,沒有路線匹配註銷

信封 軌3.0.9 紅寶石1.9.2 色器件1.4.2

我改變使用默認的登錄網址:

5 resources :users 
6 devise_for :users, :path => "", :path_names => { :sign_in => 'login', :sign_out 
    => 'logout', :password => 'secret', :confirmation => 'verification', :unlock => 
    'unblock', :registration => 'register', :sign_up => 'cmon_let_me_in' } 

而且http://localhost:3000/login我 工作正常,但我有

= link_to 'sign_out', destroy_user_session_path, :method => :delete 

在我的application.haml中,當我點擊它後,它說沒有路線匹配「/註銷」 爲什麼? 請幫幫我。

+0

什麼是'耙routes'的輸出? – Dogbert

+0

你試過Google嗎? http://stackoverflow.com/questions/6805491/ruby-on-rails-devise-http-0-0-0-03000-users-sign-out-problem/6805662#6805662 – bassneck

回答

11

我有一個幾乎相同的問題,並感謝所以很容易地修復它(link to my question)。首先,確保你的佈局文件「application.html.erb」中有<%= javascript_include_tag :defaults %>

然後,在你的配置 - >初始化 - > 「devise.rb」 文件,並確保它說:

config.sign_out_via = :delete

和你 「SIGN_OUT」 代碼destroy_user_session_path, :method => :delete應該工作。

+1

我米使用紅寶石1.9.2p180,Rails 3.1.0.rc4和設計1.4.2。 我在佈局文件中有<%= javascript_include_tag「application」%>。 並使用<%= link_to'註銷',destroy_user_session_path,:method =>:delete%> 但是它仍然不起作用 – Sayuj

+0

在你的「devise.rb」初始化文件中,你有'config.sign_out_via =:刪除'或'config.sign_out_via =:get'?最近更新了設計處理路線的方式。如果您使用:delete方法,則需要將sign_out路徑配置爲第一個選項。 – mmichael

+0

我遇到同樣的問題。我已經在devise.rb(設置爲:delete)和link_to(:method =>:delete)中正確設置了它。我也在使用和包含JQuery。但是,我仍然收到'GET'請求。我也檢查了生成的代碼,並且我看到了link_to方法的以下內容:Logout。 –

4

請在config/initializers/devise.rb中設置config.sign_out_via = :get以使用以下代碼來註銷鏈接。

<%= link_to "Sign Out", destroy_user_session_path %> 
+0

Downvote,因爲這不如使用post + csrf令牌安全。 – Bijan

5

有點晚了這個晚會,但這裏是從另一個answer

一些幫助指定您的方法:

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