Ho il seguente come il mio FileUploader:upload di file Carrierwave con diversi tipi di file
class FileUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
version :thumb, if: :image? do
# For images, do stuff here
end
version :preview, if: :pdf? do
# For pdf, do stuff here
end
protected
def image?(new_file)
new_file.content_type.start_with? 'image'
end
def pdf?(new_file)
new_file.content_type.start_with? 'application'
end
end
ho ottenuto questo dalla pagina carrierwave github. Funziona principalmente, ma cosa succede se non voglio versioni differenti? Fondamentalmente voglio solo fare determinati processi se si tratta di un pdf o di determinati processi se si tratta di un'immagine. Potrei consentire anche altri tipi di file in futuro, quindi sarebbe bello se potessi avere un modo semplice per farlo.
Per un esempio, mi può essere utile utilizzare un imgoptim se si tratta di un'immagine, e poi un pdf ottimizzazione biblioteca se si tratta di un file PDF, ecc
ho provato:
if file.content_type = "application/pdf"
# Do pdf things
elsif file.content_type.start_with? 'image'
# Do image things
end
ma ottenere il errore: NameError: (undefined local variable or method
file 'per FileUploader: Class`
Questo stato di risposta non è in realtà un errore interno del server 500, il che probabilmente significa che potrebbe essere morto da qualche parte quando si prova a richiedere il controller. Puoi anche pubblicare il tuo modello e controller? – Edward