3 votes

rails submit form w/o refresh, :remote => true

J'essaie de soumettre un formulaire dans rails sans rafraîchir la page par la suite. J'ai cherché en ligne, mais il semble que l'ajout de :remote => true ne modifie pas mon formulaire comme je le pensais. Pour l'instant, chaque question a un certain nombre de réponses, et chacune est connectée à un bouton radio, mais j'ai caché le bouton radio de sorte que cliquer sur le label lui-même soumet le formulaire. La page est-elle rafraîchie à la suite de la soumission du formulaire par le bouton radio ? Je ne suis vraiment pas sûr, et j'apprécierais toute aide à ce stade...

<%= form_for(uanswer, :remote => true) do |f| %>
    <% answers.each_with_index do |answer, i| %>
    <% unless answered_flag %>
        <%= f.radio_button :answer_id, answer.id, :class => "radio hide", 
            :onclick => "this.form.submit();" %>
    <% end %>
    <%= f.label :answer_id, answer.answer, :class => "answer",
        :value => answer.id %>
<% end %>

Le formulaire HTML généré ressemble plus ou moins à ceci :

<form accept-charset="UTF-8" action="/uanswers" class="new_uanswer" 
 data-remote="true" id="new_uanswer" method="post"><div  
 style="margin:0;padding:0;display:inline"><input 
 name="utf8" type="hidden" value=""><input name="authenticity_token"
 type="hidden" value="PY5ACVmrvDnt/iYF8RK6O7tDKAn2G2dFdLeBNZw5MJ4="></div>
</form>

8voto

Brian Chapman Points 1304

Le remote=>true ne fait rien pour vous pour l'instant car vous contournez rails avec this.form.submit(). Vous devez soumettre le formulaire de manière asynchrone. Voir Soumettre un formulaire dans rails 3 de manière ajax (avec jQuery) pour une solution à une question similaire.

0voto

Changer this.form.submit() a $(this).closest('form').submit() a fonctionné pour moi. J'utilise la méthode "onchange" au lieu de "onclick" pour mes champs de formulaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X