Разработать выход пользователя из системы, не работающий на iPhone?

я разрабатываю представления iPhone для своего приложения Rails, я использую гем разработки для аутентификации, но когда я выхожу из системы в представлении iphone, это не работает, я проверил журнал и нашел это:

Started GET "/users/sign_out" for 127.0.0.1 at 2011-12-05 17:06:24 +0800
Processing by UsersController#show as HTML
Parameters: {"id"=>"sign_out"}

я знаю, что проблема в GET, но когда я тестирую в своих настольных браузерах, таких как Chrome и Safari, выход из системы выполняется с помощью метода DELETE:

Started DELETE "/users/sign_out" for 127.0.0.1 at 2011-12-05 17:14:58 +0800
Processing by Devise::SessionsController#destroy as HTML

вот моя конфигурация маршрутов:

devise_for :users
resources :users, :only => :show

и ссылка для выхода:

<%= link_to 'Logout', destroy_user_session_path, :method => :delete %>

Мне просто интересно, почему ссылка для выхода не работает в Mobile Safari?

большое спасибо.


person Andor    schedule 05.12.2011    source источник
comment
эта проблема решена: я не включаю jquery и jquery_ujs, а jquery_ujs стремится поддерживать запросы без GET из гиперссылок.   -  person Andor    schedule 05.12.2011


Ответы (2)


Вероятно, Mobile Safari не поддерживает дизайн RESTful, поэтому не может отправить HTTP-запрос на удаление.

Попробуйте сопоставить маршрут в файле route.rb с HTTP-запросом на удаление.

match "/logout" => "devise/sessions#destroy", :via => [:delete]

Тогда ваша ссылка для выхода должна быть такой

<%= link_to 'Sign Out', logout_path %>

Если это не работает, попробуйте переопределить Devise::SessionsController следующим образом:

class SessionsController < Devise::SessionsController
 def log_out
  #custom log_out
 end
end

А затем добавьте маршрут в файл route.rb к этому действию в качестве HTTP-запроса на получение.

Я частично протестировал их и работал на меня. Дайте мне знать, если вы решите проблему, потому что я не полностью проверил эти решения.

Если вам нужна дополнительная информация о проектах RESTful, вы должны посмотреть это:

http://www.slideshare.net/calamitas/restful-best-practices

person Core2Juan    schedule 09.10.2012

Включите jquery и jquery_ujs.

<%= javascript_include_tag "jquery", "jquery_ujs" %>
person Amrit Dhungana    schedule 28.03.2014