2016-07-29 5 views
0

Hallo Ich wundere mich, warum ich keinen Fehler bekomme, wenn ich ein Formular mit einer Aktion einstelle, die auf eine Methode eingestellt ist, die noch nicht eingerichtet ist. Nach der Einreichung bleibt es auf der gleichen Seite mit verschiedenen URL-Parametern. HierWarum gibt das Senden dieses Formulars keinen Fehler?

ist die Form:

<form> 
    <%= form_tag(drop_piece_path, :method => "post") do %> 

    <% 7.times do |col| %> 
     <%= label_tag col %> 
     <%= radio_button_tag(:column, col) %> 
    <% end %> 


    <%= submit_tag("Enter move")%> 
    <% end %> 
</form> 

Hier ist meine Route:

post 'drop_piece' => 'connect_four#drop_piece', as: :drop_piece 

Und hier ist meine drop_piece Methode in meinem Controller:

def drop_piece 
    redirect_to fake_path #should raise an error because fake_path is not a real path 
end 

Ich bin verwirrt, weil seit Mein Formular ist so eingestellt, dass es an den drop_piece_path gesendet wird, sollte das nicht die Methode drop_piece in meinem Controller auslösen? Was sollte dann einen Fehler auslösen?

Noch einmal, nach dem Senden des Formulars bleibt die Anwendung nur auf der gleichen Seite mit Parametern, die dem ausgewählten Optionsfeld entsprechen.

Warum löst dies nicht meine drop_piece-Methode in meinem connect_four-Controller aus? Danke für die Hilfe.

+0

Haben Sie gesehen, dass Sie eine '' innerhalb einer '

' haben, die nicht funktioniert. Es ist auch HTML ungültig. –

Antwort

0

Dies passiert, weil Sie verschachtelte Formular-Tags haben. Eines ist <form> und ein anderes ist <%= form_tag... %>. Die HTML-Spezifikation lässt das Verschachteln von Formularen nicht zu, sodass die äußere Vorlage gesendet wird. Da das Attribut action nicht vorhanden ist, wird es an die aktuelle URL gesendet.

Verwandte Themen