rendre une partie de jquery et haml

La fonctionnalité que je prévois de faire consiste à insérer des éléments de formulaire en fonction d’un nombre choisi dans une balise select.

J’ai une balise select appelée number_of_passengers et je prévois d’append dynamicment de nouveaux champs de passagers pour le nombre choisi. Supposons que je sélectionne 2 dans number_of_passengers, puis que 2 formulaires apparaissent dans un jeu de champs. ces formulaires contiennent le nom, l’âge, le poids, etc.

J’ai essayé de suivre ceci:

appeler une fonction rails de jquery?

et juste converti en haml-speak mais je reçois des erreurs chaque fois que j’utilise la balise: javascript. De plus, je ne pense pas pouvoir “échapper” au tag javascript une fois que je suis dedans

:javascript $('#number_of_passengers').change(function() { var $num_of_passengers = $(this).val(); for($i=0; $i<$num_of_passengers;$i++) { $('.passenger-info ul').append(' "new_passenger", :locals => {:booking => @booking }) %>'); } }) 

De plus, puisque je suis dans un formulaire, comment puis-je transmettre la variable @booking au local? Cela semble vraiment compliqué et je prévois de faire le sale chemin en bouclant 20 fois (20 passagers maximum), puis en masquant / affichant celles-ci en fonction du nombre sélectionné. Mais c’est trop sale, vous ne pensez pas?

Pour que l’interpolation fonctionne, vous devez faire quelque chose comme:

 != "$('.passenger-info ul').append('#{escape_javascript( render :partial => 'new_passenger', :locals => {:booking => @booking })}'); 

si simple dit: ajoutez le != au début de la ligne, et incluez la chaîne entre guillemets doubles.

Votre question à propos de @booking : Je vous suggère d’examiner certains exemples de formulaires nesteds afin de le rendre plus clair pour vous (par exemple, ceci et ce railcast).

J’ai effectivement réussi à le faire en ajoutant:

 respond_to do |format| format.js { render :partial => "new_passenger" } end 

Ainsi, même si la demande était en js, elle retournera un code HTML partiel. Chouette

La syntaxe de Rails change tout le temps mais cela ne devrait pas

 render :partial => "new_passenger", :locals {:booking => @booking }) 

être

 render :partial => "new_passenger", :locals => {:booking => @booking }) 

Vous pouvez échapper à javascript dans le bloc javascript car vous évaluez les balises ruby.

Quels messages d’erreur recevez-vous?

La dernière partie de votre question n’est pas claire pour moi mais c’est ce que vous recherchez:

 - form_for @user do |f| # f.object is equal to @user