2 votes

form_for avec une ressource imbriquée ne soumet pas de post-requête

Premièrement : Je promets que j'ai lu tous les messages concernant ce sujet, que j'ai cherché sur tout le web, mais que je ne sais toujours pas...

Je dois modéliser Trip (has_many) et Accomodation (belongs_to). Les Accomodations sont imbriquées dans un Trip :

resources :trips do
    resources :routes, :accomodations
end

Le contrôleur ressemble à ça :

def new
  @accomodation = Accomodation.new
end

def create
   @accomodation  = Accomodation.new(params[:accomodation])
   if @accomodation.save
     flash[:success] = "Accomodation created!"
     redirect_to new_trip_accomodation_path(@trip)
   else
     render 'pages/home'
  end
end

La forme :

<%= form_for([@trip, @accomodation]) do |f| %>
    <%= render 'shared/error_messages', :object => f.object %>
    <div class="field">
           <%= f.label :title, "Titel" %>
           <%= f.text_field :title %>
    </div>
    <div class="field">
    <%= f.label :description, "Beschreibung" %>
    <%= f.text_field :description %>
    </div>

   <div class="actions">
       <%= f.submit "Create" %>
   </div> 
<% end %>

Le formulaire rend le html correct (pour autant que je puisse le voir) :

<form accept-charset="UTF-8" action="/trips/51/accomodations" class="new_accomodation" id="new_accomodation" method="post">

Ok, donc quand je soumets le formulaire, rien ne se passe. Quand je regarde dans le journal du serveur, je peux voir le get-request pour rendre le new-Form. Mais aucune réaction à la soumission... Le formulaire ne se soumet pas du tout ? Pourquoi ? Je n'en ai absolument aucune idée.

Qu'est-ce que j'ai essayé d'autre ?

 <%= form_for([@trip, @accomodation], :url => { :action => :create }, :method => :post) do |f| %>

Rien.

 <%= form_for([@trip, @accomodation], :url => { :action => :create }, :method => :post) do |f| %>

Rien non plus.

<%= form_for([@trip, @accomodation, @trip.accomodations.new]) do |f| %>

Oublie ça.

Quelqu'un peut-il m'aider ? Des indices où je pourrais commencer à creuser ?

Merci d'avance !

0voto

EppO Points 23

S'il n'y a pas de journal du serveur pour cette requête, cela signifie que le navigateur ne déclenche pas l'action submit. Avez-vous du javascript qui pourrait interférer avec l'action de soumission ? Essayez de supprimer tous les includes javascript dans vos en-têtes et testez à nouveau. J'espère que cela vous aidera.

0voto

snowangel Points 1416

Etes-vous sûr que la ligne après

<form accept-charset="UTF-8" action="/trips/51/accomodations" class="new_accomodation" id="new_accomodation" method="post">

n'est pas

</form>

?

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