form_tag avec remote: true ne fait pas de requête ajax
J'ai beaucoup de différentes formes dans mon application, ils sont tous à l'aide de remote: true
. Mais l'un ne fonctionne pas correctement, car on n'utilise pas un appel ajax.
Nettoyé, il ressemble:
<%= form_tag(upload_file_ajax_path, remote: true, multipart: true) do %>
<%= file_field_tag(:file) %>
<%= submit_tag("upload") %>
<%end%>
La balise ressemble:
<form accept-charset="UTF-8" action="/mycontroller/upload_file_ajax" data-remote="true" enctype="multipart/form-data" method="post">
<input name="utf8" type="hidden" value="✓">
<input name="authenticity_token" type="hidden" value="1234"></div>
<input id="file" name="file" type="file">
<input name="commit" type="submit" value="upload">
</form>
Et les voies d'entrée:
post "mycontroller/upload_file_ajax", as: "upload_file_ajax"
Mais la vérification de l'appel en Chrome Dev Tools, l'en-tête dit:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
et pas comme les autres formes ressembler à:
Accept:*/*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript
J'ai ajouté les fichiers js à ma disposition
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
Et même si je retire tout mon code JS de la application.js fichier (à l'exception de la //= require jquery
...), le formulaire ne fonctionne pas correctement.
Qu'ai-je manqué?
source d'informationauteur Bjoernsen
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser AJAX pour l'upload de fichiers. Qui est, normalement.
Il est génial gemme, Remotipartqui ajoute cette fonctionnalité à votre télécommande formes.
Dans application.js
Le problème que vous rencontrez est dû au fait que les fichiers ne peuvent pas être soumise par une requête AJAX.
Vous pouvez essayer d'utiliser Jquery Formulaire plugin à télécharger des fichiers via une requête AJAX à l'aide de la ajaxSubmit méthode fournie par le plugin