Ich habe Büroklammer verwendet, um einen Avatar an meinen Benutzer anzuhängen, in meinem Modell:
%Vor%Ich habe ein Formular
%Vor%Der Upload funktioniert einwandfrei, aber ich komme zurück und bearbeite meinen Benutzer, das Dateifeld sagt 'keine Datei ausgewählt'. Und da ich die Anwesenheit dieses Avatars bestätige, muss er jedes Mal, wenn ein Benutzer seine Daten bearbeitet, seinen Avatar erneut hochladen ...
Wie kann ich das umgehen?
Ich dachte, die :multipart => true
würde helfen, aber nicht.
Es gibt absolut keinen guten Weg für eine Seite, einen Wert für ein Dateifeld festzulegen, und zwar aus Sicherheitsgründen.
Wenn der Browser einer Seite oder einem JS-Skript erlaubt, einen Wert auf ein Dateifeld zu setzen, der es einer böswilligen Seite erlauben würde, den Wert des Dateifeldes mit einer System- oder Passworldatei vorzuspeichern. Und das wäre ein massives Sicherheitsloch.
In diesem Fall zeige ich die bereits gespeicherte Datei als Link an, auf den der Benutzer klicken kann, um ihn herunterzuladen. Sie können dann kleine AJAX-Links zum Löschen bereitstellen (die Datei wird mit einem AJAX-Aufruf gelöscht und der Link durch eine neue Dateieingabe ersetzt) und ersetzen (der Link wird durch eine Dateieingabe ersetzt).
Ihre letzte Option wäre, AJAX zum Hochladen der Datei zu verwenden. Wenn Sie AJAX für einen Datei-Upload verwenden, werden Sie an einen versteckten Rahmen POST, damit die Dateieingabe den ausgewählten Wert behält. Beachten Sie, dass jede Änderung am Dateifeldwert vom Benutzer initiiert werden muss.
Tags und Links forms ruby-on-rails-3.1 paperclip-validation