2016-08-04 13 views
0

Ich arbeite an einer Rails-Engine, die eine Excel-Datei hochlädt, validiert und wenn es keinen Fehler gibt, wird es in der Datenbank gespeichert.Rails uploaden Excel-Datei, validieren und speichern

Jetzt, wenn ein Benutzer den Motor montiert und dann auf die Route durch den Motor gehen. Er wird ein Formular haben, um die Excel-Datei hochzuladen. Es gibt zwei Schaltflächen auf der Seite, d. H. upload und validate.

Sobald ein Benutzer die Datei auswählen und wenn er auf Upload klicken möchte ich, dass diese Datei nur hochgeladen wird und nicht in db gespeichert wird. Sobald ich die Meldung erhalten habe, dass die Datei erfolgreich hochgeladen wurde, werde ich die Datei validieren. Wenn es sich um eine gültige Excel-Datei mit gültigen Daten handelt, wird diese in db gespeichert. Jetzt verstehe ich nicht, wie ich vorgehen soll. Ich habe diese Railscasts Video beim Hochladen csv und excel Datei gesehen, aber hier führt er Validierung und speichern Sie die Operation mit import Aktion, aber ich möchte Validierung und speichern Sie den Vorgang, wenn der Benutzer auf validate Aktion klickt. This Questions scheint ähnlich zu meinem Problem, aber ich bekomme nicht, wie ich auf diese hochgeladene Datei zugreifen kann. Ich möchte nicht, dass diese Datei in der Datenbank gespeichert wird. Ich meine, wenn ein Benutzer auf den Upload-Button klickt, wird diese Datei nur hochgeladen und nicht gespeichert. Dann werde ich diese Datei validieren und den Inhalt in db speichern.

Das mag sehr einfache und einfache Fragen für einige Experten scheinen, aber ich bin sehr neu in Schienen und ich bin mir nicht sicher, wie es geht.

Jemand bitte helfen Sie mir mit einem Beispielcode, damit ich den Workflow verstehen kann. Beachten Sie außerdem, dass sich sowohl die Upload- als auch die Validierungsaktionen auf derselben Seite befinden. Wenn also eine Datei hochgeladen wird, muss sie vorübergehend gespeichert werden. Dies ist das erste Problem, vor dem ich stehe. Ich kann alle Aufgaben erledigen, wenn mir jemand einen Workflow mit einem Beispielcode zum Hochladen einer Excel-Datei mitteilen kann. Ich habe hier nur ein Problem, da sowohl die Upload- als auch die Validierungsaktion auf derselben Seite sind. Nach der Upload-Anfrage muss es also auf dieser Seite sein, damit ich diese Datei validieren kann.

Jede Hilfe wäre willkommen, ich bin sehr Anfänger auf Schienen und wirklich verwirrt hier.

Antwort

0

zwei Optionen:

  1. nimmt Code die Datei und speichern zu DB mit einer validated Spalt auf false gesetzt zu. Dann wird die Schaltfläche "validieren" die nicht validierte Datei finden, validieren und validated auf true setzen. Sie könnten einen periodischen Job haben, um nicht validierte Dateien eines bestimmten Alters zu löschen. Wenn Sie dies tun, verwenden Sie einen Helfer wie Paperclip.

  2. Forego Datei hochladen Frameworks und nur manuell hochgeladene Dateien auf Tempfile.new 'spreadsheet'. This guide führt Sie durch, wie man das macht. Speichern Sie diesen Dateinamen in session und verwenden Sie ihn, um zu einem späteren Zeitpunkt zu validieren. Wenn Sie schließlich bereit sind, in der Datenbank zu verweilen, sollten Sie ein Helper-Juwel verwenden.

+0

tatsächlich das Problem gelöst. Ich wurde verwirrt, aber das ist geschafft. danke für die Antwort. – Sinscary

Verwandte Themen