Rails formulaire ajax ne pas soumettre de l’intérieur d’un autre

J’ai un formulaire ajax Rails 3.2 qui crée une nouvelle chambre pour un hôtel. Le nouveau formulaire Room ajax fonctionne correctement sur la page d’index des salles, mais une fois que j’ai intégré le nouveau formulaire Room ajax à une page de modification d’un hôtel, le formulaire est envoyé normalement sans utiliser Ajax.

Pour créer le nouveau formulaire de chambre, j’utilise le lien suivant sur la page Hôtel edit.html.erb:

 @hotel.id), :remote => true, :class => 'new_room' %> 

Cela charge partiellement le formulaire suivant sur la même page:

  true, :html => { :class => "remote-form" } do |f| %>      @hotel_id %>     'room_create' %>  "room_cancel" %>  

Et enfin, j’ai dans mon create.js.erb (à l’intérieur du dossier des salles):

 alert('Test creating a room'); var content = $(''); $("#room_list tbody").append(content); 

Le fichier create.js.erb n’est pas exécuté et le formulaire est soumis régulièrement (non-ajax) et j’arrive enfin sur la page room show.html.erb.

Pourquoi le formulaire fonctionne-t-il correctement sur la page d’index des unités, mais pas sur la page d’édition associée?

Même lorsque vous définissez :remote => true , Rails génère une balise de form . Les balises de formulaire nestedes ne sont pas sockets en charge par les navigateurs et entraîneront un comportement imprévisible.

Vous devriez repenser l’architecture des vues ici. Vous pouvez probablement avoir les formulaires pour les chambres en dehors du formulaire pour l’hôtel, ou peut-être vous pouvez utiliser fields_for et accepts_nested_atsortingbutes_for pour éditer des objects enfants.

Voici un exemple complet d’utilisation des atsortingbuts nesteds: Exemples d’atsortingbuts nesteds .

Vous ne pouvez pas imbriquer un formulaire dans un formulaire au format HTML. Lorsque vous cliquez sur un bouton d’envoi d’un formulaire, même s’il se trouve dans un autre formulaire, seul le formulaire le plus externe est correctement envoyé.

Vous pouvez soit utiliser des atsortingbuts nesteds pour append les atsortingbuts de la salle directement au formulaire, de sorte que lorsque le formulaire global est soumis, toutes les salles …, ou utiliser un div et un lien, au lieu d’un formulaire et d’un bouton d’envoi .