Quand nous:

  1. Créer un button_to avec remote: true
  2. Mettre le code javascript dans un fichier .js.erb correspondant à la requête

Ensuite, le code du fichier js.erb est exécuté sur la réponse. J'étais curieux de savoir comment ce code est exécuté dans le navigateur.

Est-ce via une sorte d'appel eval dans la bibliothèque rails, ou est-ce lié à l'en-tête Content-Type défini sur text/javascript dans la réponse?

7
Yeonho 20 juil. 2015 à 16:55

2 réponses

Meilleure réponse

Il est exécuté, car le dataType de la requête ajax est mis à script.

$.ajax({
  url: url,
  dataType: "script",
  success: success
});

http://api.jquery.com/jquery.ajax/

http://api.jquery.com/jquery.getscript/

2
Yury Lebedev 20 juil. 2015 à 14:03

Rails génère du code javascript responsable de l'envoi de l'appel, c'est le fichier jquery_ujs.js ajouté par défaut à votre layout. Ensuite, il convertit simplement tous les appels avec l'attribut data-remote=true - il empêche la soumission de formulaire par défaut et effectue un appel ajax au href spécifié.

0
Piotr Kruczek 20 juil. 2015 à 14:01