【发布时间】:2012-07-13 13:27:46
【问题描述】:
当我尝试退出设计时出现以下错误:
没有路由匹配 [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
关于什么可能导致问题的任何想法?我已经在 Google 上搜索过,但仍然很困惑。
更新:
这里是供设计用户使用的 rails routes 文件的屏幕截图。对不起,它很小,但您可以右键单击然后单独查看更大的屏幕。
更新 #2:
jquery_ujs 文件已包含在内。
更新#3:
在控制台中显示确实正在传递删除,但它正在从 session_controller 跳转到 / 然后跳转到 d/users/sign_out...不知道如何解决这个问题。
更新 #4:
当重定向它时,它应该首先作为 DELETE 进入 d/users/sign_out。然后它重定向到root_url,然后给出错误ERROR Errno::ECONNABORTED: An established connection was aborted by the software in your host machine.,然后尝试重定向到 d/users/sign_out 作为失败的 GET。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 devise