2011-01-13 4 views
0

Ok, so dass ich ein Modell haben und in diesem Modell habe ichPaperclip schlägt auf einem validates_presence_of

class User < ActiveRecord::Base 
    validates_presence_of :name 
    has_attached_file :picture, :styles => { :medium => "300x300>", :thumb => "100x100>",:tiny => "25x25>" } 
end 

, wenn ich einen Benutzer zu erstellen und ein Bild hochladen und keinen Namen gebe ich die erwartete Nachricht

erhalten
1 error prohibited this user from being saved. 
There were problems with the following fields: 
    * Name can't be blank 

aber das Bild ist weg ... wenn ich an meiner Konsole aussehen sehe ich

 [paperclip] identify -format %wx%h '/var/folders/QK/QK+tCPT-Gx8yGDxVQbDuF++++TI/-Tmp-/stream20110113-19714-1ucz75p-0.jpg[0]' 2>/dev/null 
     [paperclip] convert '/var/folders/QK/QK+tCPT-Gx8yGDxVQbDuF++++TI/-Tmp-/stream20110113-19714-1ucz75p-0.jpg[0]' -resize "25x25>" '/var/folders/QK/QK+tCPT-Gx8yGDxVQbDuF++++TI/-Tmp-/stream20110113-19714-1ucz75p-020110113-19714-r839l2-0' 2>/dev/null 

aber das Bild wird auf dem neuen p gegangen Alter ... gibt es eine Möglichkeit, dieses Bild zu erhalten, so dass jeder, der die Seite benutzt, nicht erneut nach dem Bild suchen muss.

Antwort

0

Grundsätzlich keine. Dies ist ein Browserverhalten, auf das der Server keine Kontrolle hat. Wenn Sie sich Sorgen über Validierungen an anderer Stelle in Ihrem Modell machen, die dazu führen, dass der Nutzer seine Bilder erneut auswählen und erneut hochladen muss, würde ich vorschlagen, den Dateianhang zu einem separaten Schritt zu machen.

0

Der Browser setzt das Formular zurück, wenn sie darauf zurückkommen. Sie können möglicherweise etwas simulieren, das wie ein einzelner Schritt aussieht, indem Sie die Datei mit AJAX im Hintergrund hochladen und das Formular von der Einreichung bis zum Hochladen der Datei halten.

0

Eine bessere Idee könnte es sein, dem Formular clientseitige Validierungen hinzuzufügen, damit der Benutzer bei der Eingabe ungültiger Daten sofort aufgefordert wird, diese zu korrigieren. Wenn Sie nur IE10 + unterstützen, können Sie HTML5-Validierungen verwenden, andernfalls müssen Sie Javascript-Validierungen verwenden.

Verwandte Themen