2009-09-19 6 views
6

Verwendung der gleichen Formular teilweise sowohl in erstellen und bearbeiten in meinem Fall neu und Vorschau. Teil sieht etwa so (ich benutze HAML)= button_to erzeugt kein Formular, wenn bereits in einer anderen Form

=form_tag ({:action => params[:action]}, :multipart => true) 
    =text_field :newsletter, :title 
    =text_area :newsletter, :body 
    =file_field :newsletter,:attachment 
    -if params[:action] == "preview" 
    =button_to "select contacts and send", :action => "contacts" 
    =submit_tag "save and preview" 

aber in der HTML-Ausgabe ist

... 
<input type="submit" value="select contacts and send"/> 
<input type="hidden" value="rwYnZlEpWV4dR89zjgprEALBYmP0xqM3lnKt9JDLyak=" name="authenticity_token"/> 
<input type="submit" value="save and preview" name="commit"/> 
... 

warum die button_to nicht auf den Button erzeugen, zu bilden?

eine Lösung ist, den Knopf außerhalb der partiellen und nur 1 pro Formular, aber wie kann ich 2 Tasten in der gleichen Form haben?

edit: eine andere Abhilfe würde eine versteckte Option sein, die von Javascript gesetzt, wenn die button_to gedrückt wird, und sendet das Formular, so dass sie in der Steuerung zu trennen

Antwort

12

HTML erlaubt es nicht, tatsächlich für Formen verschachtelt werden. Einige Browser tun das, aber Sie werden in anderen ein verrücktes Verhalten sehen. Ist der HTML-Code die rohe Ausgabe oder das berechnete DOM von Firebug?

Der bevorzugte Weg, um diesen Fall zu behandeln, ist Ihre button_to außerhalb der anderen Form zu bewegen. Wenn Sie mit JS-only-Optionen cool sind, können Sie link_to :method => :post verwenden und den Link so gestalten, dass er wie eine Schaltfläche aussieht.

1

Am Ende verwendete

:name => 'otheraction' 

in der Steuerung dann, wenn entweder geprüft

params[:commit] or params[:otheraction] 

in der Hash-params war

Verwandte Themen