2016-04-22 14 views
0

Beim Erstellen eines neuen Datensatzes (Rails default new action) ist die Objekt-ID nil b/c, sie ist in der db nicht vorhanden.Rails uploads für neues Objekt

Beim Hochladen von Objekten werden diese normalerweise an eine ID gebunden (mit Büroklammer).

Wenn mein Benutzer auf new klickt und ich einen dropzone.js-Bereich für den Ajax-Upload bereitstellen möchte, wie knüpfe ich dieses Bild/diese Datei an das Post-Objekt, wenn es keine ID hat?

Wenn sie verwerfen oder den Browser verlassen, würde ich verwaiste temporäre images/Dateien haben ...

Ich habe Probleme, die Punkte zwischen einem Objekt Upload für einen neuen Datensatz zu verbinden.

Kann mir jemand dabei helfen, die Steuerungslogik auszuarbeiten? Ich kann es ziemlich einfach in einer separaten Aktion tun, nachdem das Objekt erstellt wurde, aber vorher nicht.

Antwort

2

Ich machte einen Edelstein, um diese Art von Problem zu lösen. Es funktioniert auf Büroklammer und ist nicht aufdringlich. Um die Funktionalität zu aktivieren, müssen Sie die Büroklammer has_attached_file durch has_attached_upload ersetzen.

Mit Rails Pallet gem ... Zuerst müssen Sie die Datei auf dem Server hochladen POST /uploads mit file Attribut ausgeführt wird. Die Antwort gibt Ihnen eine Kennung in Bezug auf diese Datei. Dann senden Sie die Kennung, können Sie Ihren eigenen Datensatz aktualisieren. Der Edelstein kopiert die Datei danach in Ihren Datensatz.

Auf diese Weise können Sie Dateien hochladen, bevor Sie Ihre Aufzeichnung fortbestehen.

Sie können README

+0

Ehrfürchtig ein vollständiges Beispiel für gem sehen. Ich werde es mir ansehen. Kannst du als Ersatz für Büroklammern überhaupt sprechen? –

+0

auch ist diese Schiene 5 kompatibel? –

+0

Es ist eine Büroklammer Ergänzung, kein Ersatz. Sie ersetzen 'has_attached_file' durch' has_attached_upload' nur in den Modellen, die Sie benötigen. Ich habe es nicht nur in Rails 5, Rails 4.2 getestet. – Leantraxxx

Verwandte Themen