簡體   English   中英

Rails 3 with Devise:沒有路由匹配/ d / users / sign_out

[英]Rails 3 with Devise: No route matches /d/users/sign_out

當我嘗試退出設計錯誤時,我收到以下錯誤:

沒有路線匹配[GET]“/ d / users / sign_out”

我的標簽是正確的,如下:

<%= link_to "Sign Out", destroy_session_path, :method=>:delete %>

我的設計路線是:

devise_for :users, :path_prefix=>"d", :controllers=>{:sessions=>"sessions"}

其他路線是:

resources :users#For CRUD defined after devise_for like in Devise Wiki

使用自定義控制器會話進行ajax登錄,例如在Devise wiki頁面上:

class SessionsController < Devise::SessionsController

 def create
  respond_to do |format|
    format.html{ super }
    format.json do
     resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure")
     #resource = warden.authenticate!(:scope => resource_name, :recall => :failure)
     return sign_in_and_redirect(resource_name, resource)
    end
   end
  end

def sign_in_and_redirect(resource_or_scope, resource=nil)
  scope = Devise::Mapping.find_scope!(resource_or_scope)
  resource ||= resource_or_scope
  sign_in(scope, resource) unless warden.user(scope) == resource
  return render :json => {:success => true, :redirect => stored_location_for(scope) || after_sign_in_path_for(resource)}
end

def failure
  return render:json => {:success => false, :errors => ["Login failed."]}
end

end

設計初始化程序具有:

config.sign_out_via = :delete

關於什么可能導致問題的任何想法? 我搜索了谷歌,但仍然感到難過。

更新:

以下是設計用戶的rails路徑文件的屏幕截圖。 抱歉,它很小,但你可以右鍵單擊然后自己查看它以獲得更大的屏幕。

在此輸入圖像描述

更新#2:

包含jquery_ujs文件。

更新#3:

它在控制台中顯示刪除確實正在傳遞,但是它從sessions_controller跳轉到/然后轉到d / users / sign_out ...不確定如何解決這個問題。

更新#4:

重定向時,首先將d / users / sign_out作為DELETE傳遞給它。 然后重定向到root_url ,然后給出錯誤ERROR Errno::ECONNABORTED: An established connection was aborted by the software in your host machine. 然后它嘗試重定向到d / users / sign_out作為GET失敗的地方。

這似乎是Devise和Ruby 1.9.2-p290之間的問題。 更新到Ruby 1.9.3並運行bundle update以確保使用最新版本的Devise; 似乎工作。

聽起來你可能已經從application.js文件中刪除了//= require jquery_ujs 我認為處理鏈接細節以發出“刪除”請求。 無論哪種方式,就像現在一樣,你正在做一個'GET',顯然不會命中你的destroy_user_session方法。

更改:

config.sign_out_via = :delete

至:

config.sign_out_via = :get

看到這個相關:

沒有路由匹配“/ users / sign_out”設計rails 3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM