2017-10-14 17 views
0

J'ai suivi ce tutoriel: https://blog.andrewray.me/how-to-set-up-devise-ajax-authentication-with-rails-4-0/Et j'utilise des rails 5.1.Ruby Devise s'inscrire avec AJAX ne recevant pas la réponse de Johnson?

J'ai mis en œuvre la réponse JSON dans le contrôleur:

class RegistrationsController < Devise::RegistrationsController 

    respond_to :json 
end 

Et quand j'appelle ajax je reçois seulement une réponse Html/Text:

function createUser(callback) { 
    $.ajax({ 
     type: "POST", 
     url: window.urls.createUser, 
     data: { 
      authenticity_token: $("meta[name=csrf-token]").attr("content"), 
      user: grabOrderFormUserData() 
     }, 
     success: function(data) { 
      console.log("Data: " + data); 
     }, 
     error: function (data) { 
      //console.log("error"); 
     } 
    }) 
} 

Cet appel fonctionne très bien, mais renvoie le HTML page de l'inscription. L'URL que j'utilise est createUser: hostUrl + '/users/'

Qu'est-ce que j'ai manqué?

Et non, si j'ajoute .json à mon URL, il répondra avec 500 code d'erreur.

+0

Avez-vous lu une partie Dépannage de cet article (sur les routes râteau)? – kolas

+0

@kolas Itinéraires de râteau? – Jony

+0

à propos de l'ajout de concevoir_for: users,: controllers => {sessions: 'sessions', inscriptions: 'registrations'} à route.rb – kolas

Répondre

0

Je pense que vous avez manqué de mentionner dataType: "json" votre appel ajax, essayez cette

function createUser(callback) { 
    $.ajax({ 
     url: window.urls.createUser, 
     type: "POST", 
     data: {`enter code here` 
      authenticity_token: $("meta[name=csrf-token]").attr("content"), 
      user: grabOrderFormUserData() 
     }, 
     dataType: "json", 
     success: function(data) { 
      console.log("Data: " + data); 
     }, 
     error: function (data) { 
      //console.log("error"); 
     } 
    }) 
} 

et aussi dans votre contrôleur essayer d'appeler ce bloc dans le cas si vous ne recevez pas de réponse JSON,

respond_to do |format| 
    format.json { 
     render json: {.....} 
    } 
end 

merci.