So zeigen Sie den Inhalt des Formulars an, das gerade in der Option „:confirm =>“ in Ruby on Rails eingegeben wurde

StackOverflow https://stackoverflow.com/questions/1879344

  •  18-09-2019
  •  | 
  •  

Frage

Ich versuche, die eingegebenen Informationen zu bestätigen, bevor ich sie tatsächlich in der Datenbank speichere

Ich habe überlegt, eine individuelle Bestätigungsseite zu erstellen, wie hier beschrieben

Ruby auf Rails:Bestätigungsseite für die ActiveRecord-Objekterstellung

Allerdings enthält mein Formular eine angehängte Datei mit einer Büroklammer, was die Implementierung schwieriger macht.

Ich dachte daran, nur a zu haben: bestätigen => pop -up, die die Informationen zeigen, die der Benutzer gerade eingegeben hatte.

Das Problem besteht beispielsweise darin, die Informationen anzuzeigen, die der Benutzer gerade eingegeben hat

<% form_for @entry, :html => { :multipart => true } do |f| %>
  <%= f.error_messages %>


    <%= f.label :name %><br />
    <%= f.text_field :name %>

    <%= f.label :file %><br />
    <%= f.file_field :file %>

    <%= f.submit 'Create', :confirm => "????? " %>

<% end %>
War es hilfreich?

Lösung

Angesichts der Tatsache, dass Ihre Anhänge geladen werden, ist es möglicherweise keine schlechte Idee, eine Staging-Ansicht einschließlich der aus dem Anhang abgeleiteten Informationen zu rendern, damit der Benutzer dies bestätigen kann.Zum Beispiel die Datei anzeigen, wenn es sich um ein Bild handelt, oder den ersten Textabsatz, wenn es sich um eine Textdatei handelt usw.

Es wird mehr Arbeit erfordern als nur das Hinzufügen eines Bestätigungs-Popups, aber ich bin der Meinung, dass die verbesserte Benutzererfahrung den zusätzlichen Aufwand wert ist.

Ich bin mit der Funktionsweise dieser Büroklammer nicht vertraut.Für die intimen Details sind Sie also größtenteils auf sich allein gestellt.

Sie müssen wahrscheinlich einen Datensatz erstellen, bevor die Staging-Ansicht mit dem Beispiel der hochgeladenen Datei gerendert werden kann.Um dies zu erreichen, würde ich für das betreffende Modell eine „aktive“ Spalte einrichten, die standardmäßig auf „false“ gesetzt ist.

Die Nutzung würde etwa so aussehen:

  1. Der Benutzer füllt ein neues Formular aus.
  2. Der Anhang wird aktualisiert und die Datensätze werden gespeichert, wobei das aktive Feld auf „false“ gesetzt ist.
  3. Weiterleitung zur Bestätigungsseite, bei der es sich im Wesentlichen um die Anzeigeseite mit einem Bestätigungslink/-knopf und einem Abbrechen-Link/-knopf handelt
  4. A.Wenn auf den Link/die Schaltfläche „Bestätigen“ geklickt wird, wird eine Anfrage an den Controller gesendet, die die Aktualisierungsaktion für diesen Datensatz auslöst und „aktiv“ auf „wahr“ setzt.

    B.Wenn auf den Link/die Schaltfläche „Abbrechen“ geklickt wird, wird eine Anfrage an den Controller gesendet, die die Löschaktion für diesen Datensatz auslöst.

Jetzt muss nur noch eine wiederkehrende Aufgabe eingerichtet werden, um Objekte zu entfernen, die inaktiv sind und vor langer Zeit erstellt wurden, sodass davon ausgegangen werden kann, dass der Benutzer gerade die Browsersitzung beendet hat.

Andere Tipps

Die Option für Bestätigungsoption für die Methode der Schienenübermittlung kann nur einen Textwert annehmen.

Wenn Sie den Bestätigungstext dynamisch generieren möchten, können Sie dies auf eine Möglichkeit tun, um Ihr eigenes HTML -Senden -Tag zu schreiben und benutzerdefinierte JavaScript zu schreiben, um die Felder zu analysieren, die Sie in Ihrem generierten Text verwenden möchten.

Oder Sie können die Methode der Rails -Senden verwenden, aber so etwas wie JQuery verwenden, um einen Event -Handler hinzuzufügen.

Ich würde einfach meine werfen JS in einen Onclick -Handler. Das ist alles Rails.

<%= f.submit 'Create', :onclick => "confirm('Name is ' + $F('entry_name'));" %>

(Beachten Sie, dass es nicht getestet wird, aber es sieht eng aus. Bestätigen Sie eine Kernfunktion JS, nicht Teil einer LIB)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top