Rails Devise Ajax call - PullRequest
       9

Rails Devise Ajax call

3 голосов
/ 22 ноября 2011

Мне нужно обработать вход в систему с помощью ajax-вызова. Прямо сейчас у меня есть логин devise, созданный с помощью простых форм, то, что существует для devise, предназначено полностью для серверной части. клиентская часть построена полностью независимо от ruby. Сотрудник на стороне клиента должен знать, как отправить информацию через AJAX с надлежащими параметрами для обработки входа и входа.

Редактировать

Мой application.js не выглядит так

// This is a manifest file that'll be compiled into including all the files listed below.
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
// be included in the compiled file accessible from http://example.com/assets/application.js
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
//= require jquery
//= require jquery_ujs
//= require_tree .
$(function(){
  $.ajaxSetup({
    beforeSend: function( xhr ) {
      var token = $('meta[name="csrf-token"]').attr('content');
      if (token) xhr.setRequestHeader('X-CSRF-Token', token);
    }
  });
});

и это мой почтовый запрос

function signIn(email, password){

    var data = {user: {email: email, password: password}};
    $.ajax({
        url: 'http://localhost:3000/users/sign_in.json',
        type: 'POST',
        dataType: 'json',
        data: data,
        success: function(data, textStatus, xhr) {
            alert('success');
            alert(data); //to see what kind of outputs these have
            alert(textStatus);
            alert(xhr);

        //called when successful
        }
    });
}

это дает это в моей консоли rails

Started POST "/users/sign_in.json" for 127.0.0.1 at 2011-12-08 12:30:06 -0500
Processing by SessionsController#create as JSON
Parameters: {"user"=>{"email"=>"someone@hotmail.com", "password"=>"[FILTERED]"}}
WARNING: Can't verify CSRF token authenticity
User Load (0.1ms)  SELECT "users".* FROM "users" WHERE "users"."email" = 'someone@hotmail.com' LIMIT 1
(0.3ms)  UPDATE "users" SET "last_sign_in_at" = '2011-12-08 17:29:23.030686', "current_sign_in_at" = '2011-12-08 17:30:07.069479', "sign_in_count" = 11, "updated_at" = '2011-12-08 17:30:07.069864' WHERE "users"."id" = 16
Completed 201 Created in 144ms (Views: 2.1ms | ActiveRecord: 0.0ms)

и в моем браузере, когда я проверяю элемент и иду к консоли, я получаю

XMLHttpRequest cannot load http://localhost:3000/users/sign_in.json. Origin null is not allowed by Access-Control-Allow-Origin.

И ни одно из моих предупреждений не показывается.

Что мне нужно изменить

1 Ответ

6 голосов
/ 05 декабря 2011

По умолчанию, вы должны написать такой код:

Сначала настройте токен CSRF в своем приложении.$.ajax({ url: '/users/sign_in.json', type: 'POST', dataType: 'json', data: {user: {email: 'email@example.com', password: 'password'}}, success: function(data, textStatus, xhr) { //called when successful } });

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