Я получаю следующую ошибку, когда пытаюсь выйти из ошибки разработки:
No route matches [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 :
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 и все еще в тупике.
Вот скриншот файла маршрутов рельсов для пользователей devise. Извините, он маленький, но вы можете щелкнуть правой кнопкой мыши -и просмотреть его отдельно на большом экране.
Файл jquery _ujs включен.
В консоли отображается, что удаление действительно передается, но оно переходит от контроллера сеансов _к /, а затем к d/users/sign _out... Не знаю, как это исправить.
При перенаправлении сначала выполняется d/users/sign _как DELETE, как и должно быть.Затем он перенаправляется на root_url
, что затем выдает ошибку ERROR Errno::ECONNABORTED: An established connection was aborted by the software in your host machine.
. Затем он пытается перенаправить на d/users/sign _как GET, где происходит сбой.