Разработка входа в систему с jQuery Mobile и Rails - PullRequest
4 голосов
/ 16 ноября 2011

Я пытаюсь найти устройство для входа в систему, но получаю ошибку 500 из-за отсутствия шаблона. Любая идея? Почему он пытается отрендерить devise/sessions/create?

Рельсы 3.1


Я использую камень mobylette: https://github.com/tscolari/mobylette У меня есть устройство с настройкой:

config.navigational_formats = [:"*/*", "*/*", :html, :mobile]


Completed 500 Internal Server Error in 145msActionView::MissingTemplate (Missing template devise/sessions/create, application/create with {:handlers=>[:erb, :builder, :coffee, :haml], :formats=>[:mobile], :locale=>[:en, :en]}. Searched in: * "/Users/Armageddon/Projects/Business/jquerymobiletest/app/views" * "/Users/Armageddon/.rvm/gems/ruby-1.9.2-p180-patched@jquerymobiletest/gems/devise-1.4.9/app/views"): Rendered /Users/Armageddon/.rvm/gems/ruby-1.9.2-p180-patched@jquerymobiletest/gems/actionpack-3.1.0/lib/action_dispatch/middleware/templates/rescues/missing_template.erb within rescues/layout (0.5ms)

Ответы [ 2 ]

8 голосов
/ 23 ноября 2011

Мне пришлось внести следующие изменения, чтобы сделать эту работу:

конфиг / Инициализаторы / devise.rb

config.http_authenticatable_on_xhr = false В противном случае JQuery Mobile отправляет запросы XHR на вход в систему, и вы получаете ошибку 401.

config.navigational_formats = [:"*/*", "*/*", :html, :mobile]

В противном случае он не распознает формат. Вы могли бы подумать, что это будет обрабатывать перенаправления, но на самом деле это не так. Вам нужно сделать еще одну вещь.

Мне повезло, поэтому я добавил его в: конфиг / Инициализаторы / devise_hack.rb

ActionController::Responder.class_eval do alias :to_mobile :to_html end

Теперь это работает.

Еще одна вещь, хотя; в моем application.rb у меня есть это для mobylette, чтобы настроить мой мобильный материал:

respond_to_mobile_requests :skip_xhr_requests => false, :fall_back => :html

Между Responder.class_eval и :fall_back => :html можно подумать, что в этом нет необходимости. Большая часть написанного конфига кажется одинаковой и / или дублированной. Однако без всех этих настроек он просто не работает.

1 голос
/ 18 ноября 2011

У меня тоже была эта проблема, я решил ее, создав файл в сессиях app> views> devise> create.mobile.erb. В нем есть следующий код:

<section id="login_redirect_page" data-role="page"> 
  <script type="text/javascript">
    window.location = "<%= root_path %>"
  </script>
</section>

Он просто помещаетпредставление create в мобильном блоке jquery перенаправляет на путь root_path.Я ищу лучшие способы сделать это, хотя, поэтому я опубликую, если я столкнусь с чем-то.

...