Ajax-запрос к серверу rails с использованием jQuery с не работающей телефонной пробкой - PullRequest
0 голосов
/ 18 апреля 2011

Я пытаюсь отправить запрос на вход в rails Restful API из моего приложения Phonegap на iOS.
Следующий код работает с jQuery 1.5, но не с jQuery 1.4.2.

Кто-нибудь знает, почему это так?

$.ajax({<br> type: 'POST', url: urlFactory.getLoginURL(),<br> data: { 'email': emailVal, 'password': passwordVal },<br> success: onSuccess,<br> error: onError, dataType: "json"<br> });

Веб-сервер выдает мне следующую ошибку:

Started POST "/login.json" for 127.0.0.1 at Mon Apr 18 00:29:38 +0100 2011<br> Processing by SessionsController#create as JSON<br> Parameters: {"password"=>"[FILTERED]", "email"=>"example@gmail.com"}<br> User Load (0.3ms) SELECT <code>users. * ОТ users ГДЕ (users. id НУЛЬ) ПРЕДЕЛ 1
Завершено за 251 мс
ActionController :: InvalidAuthenticityToken (ActionController :: InvalidAuthenticityToken):
app / controllers / application_controller.rb: 37: в require_authorisation_happened'<br> Rendered /usr/local/lib/ruby/gems/1.8/gems/actionpack- 3.0.3/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.4ms)<br> Rendered /usr/local/lib/ruby/gems/1.8/gems/actionpack- 3.0.3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (14.1ms)<br> Rendered /usr/local/lib/ruby/gems/1.8/gems/actionpack- 3.0.3/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (23.4ms)

В успешном случае возвращает следующее:

Started POST "/login.json" for 127.0.0.1 at Mon Apr 18 00:16:25 +0100 2011<br> Processing by SessionsController#create as JSON<br> Parameters: {"password"=>"[FILTERED]", "email"=>"example@gmail.com"}<br> User Load (0.3ms) SELECT пользователи .* FROM пользователи WHERE ( пользователи . id IS NULL) LIMIT 1<br> User Load (19.4ms) SELECT пользователи .* FROM пользователи WHERE ( пользователи . email = 'example@gmail.com') LIMIT 1
Выполнено 200 ОК за 306 мс (Просмотров: 4,6 мс | ActiveRecord: 19,7 мс)

1 Ответ

0 голосов
/ 18 апреля 2011

Вам не хватает токена подлинности.В rails2 вы можете использовать form_authenticity_token в своем представлении для визуализации токена подлинности, а затем вам нужно будет добавить его к параметрам, представленным в форме.

В Rails3 это проще.Просто добавьте <% = csrf_meta_tag%> в заголовок вашего макета, а затем убедитесь, что вы используете библиотеку rails.js для ajax.Это поднимет токен подлинности и отправит его с формой.

Здесь есть короткая запись http://www.themodestrubyist.com/2010/02/24/rails-3-ujs-and-csrf-meta-tags/

И пример приложения здесь https://github.com/grigio/rails3-ujs-demo.git

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...