2011-01-16 5 views
0

Ich versuche, einen generischen Satz von Submit-, Cancel- und Destroy-Aktionen für Formulare zu erstellen. An diesem Punkt scheint es, dass alles funktioniert, außer dass ich :back Funktionalität verlieren, dann wird ein Formular aufgrund von Validierungsfehlern neu geladen. Gibt es eine Möglichkeit, die Tatsache zu erkennen, dass die Validierung fehlgeschlagen ist, und in diesem Fall die request.env['HTTP_REFERER'] oder :back Wert gleich bleibt, ohne jeden Controller zu bearbeiten?Rails: Generische Formularaktionen, Abbrechen von Linkverlusten `: Zurück` bei Validierungsfehler

= simple_form_for @announcement do |f| 
    = f.error_notification 
    = f.input :message 
    = f.input :starts_at 
    = f.input :ends_at 
    #submit 
    = f.button :submit 
    = "or " 
    = link_to("cancel", url_for(:back)) 
    .right 
     - if !f.object.new_record? 
     - resource = (f.object.class.name).downcase 
     = link_to "destroy", url_for(:action => 'destroy'), :confirm => "Are you sure that you want to delete this #{resource}?", :method => :delete 
    .clear 
    .non_input 
    #post_back_msg 
     #indicator.inline 
     = image_tag "indicator.gif" 
     .inline 
     = "Please wait..." 
     .non_input 

Antwort

0

Wie wäre es mit einer Hilfsmethode mit so etwas?

@previous = @previous.blank? ? request.env['HTTP_REFERRER'] : @previous 

die dann auf die Schaltfläche Abbrechen ist nur:

link_to('Cancel', @previous) 
+0

Dies könnte funktionieren, aber wann wäre "@previous" leer? –

+0

Wenn die Validierung fehlschlägt, würden Sie @previous = "" – jschorr

+0

Perfect setzen. Vielen Dank!!! –

0

funktionierts?

link_to "Cancel", @model.errors.any? ? request.env['HTTP_REFERRER'] : :back 
Verwandte Themen