2012-08-03 23 views
5

Estoy usando Paperclip-FFMEG para cargar archivos de video a mi entorno de desarrollo (y, eventualmente, a un servidor local cuando mi proyecto entre en producción).Eliminar el signo de interrogación de los archivos generados por Paperclip en Ruby on Rails 3.2.6

Cuando se suben vídeos, el nombre del archivo es, por defecto, de la siguiente manera:

/system/modelnames/paperclipnames/.../mynewfile.mp4?xxxxxxxxxx 

creo que la cifra de 10 dígitos después del signo de interrogación es una marca de tiempo.

Sin embargo, al reproductor que utilizaré para reproducir los videos no le gusta tener nada después del archivo adjunto, por lo que me gustaría quitar el questionmark y la marca de tiempo después, antes de pasar la URL al reproductor .

He intentado utilizar el siguiente Ruby (creo) la función de la tira:

temp_variable = model.paperclipattribute.url(:blah).strip('?')[0] 

Sin embargo, los carriles arroja un error:

wrong number of arguments(1 for 0) 

lo tomo estoy haciendo esto mal? ¿Alguna otra solución? No quiero apagar las marcas de tiempo por completo, ya que solo tengo que hacerlo en esta situación.

Gracias!

Respuesta

16

Si quieres hacer esto en todas partes para un archivo adjunto dado y sin la necesidad de pasar el parámetro adicional, puede establecer la opción use_timestamp al llamar al método has_attached_file en su modelo. Por lo tanto, para construir en el ejemplo dado en el LECTOR de Paperclip:

has_attached_file :avatar, 
    :styles => { :medium => "300x300>", :thumb => "100x100>" }, 
    :default_url => "/images/:style/missing.png", 
    :use_timestamp => false 
2

Quiere usar split en su lugar, creo. strip no toma ningún argumento, solo elimina los espacios en blanco iniciales y finales

+0

brillante, sabía que era algo sencillo! ¡Gracias! – Graeme

+0

@Graeme ¡Asegúrese de aceptar esta respuesta haciendo clic en la marca de verificación junto a su puntaje, si le resultó útil! – slhck

6

Espero que esto esté bien para poner como respuesta a mi propia pregunta (ya que puede ser útil para otros que tropiezan con esta publicación), pero 've desde descubrieron que una alternativa (y más apropiado) manera de hacer frente a este problema es añadir el parámetro false a URL() de la siguiente manera cuando se muestra el contenido en su opinión:

model.paperclipattribute.url(:whateverstyle, false) 

la marca de tiempo será automáticamente remoto. Creo que esto es mejor, ya que el método split que sugerí podría eliminar contenido que no tiene la intención de eliminar; por ejemplo, si su archivo se llama algo como "Is_this_a_question _? _ Yes_it_is.mp4? Xxxxxx", todo después del primer signo de interrogación podría ser eliminado (es decir, el archivo se puede leer como "¿Es esta una question_", corrompiendo así el nombre de archivo.

no he probado esto, así que puede estar equivocado.

+0

Gracias, +1, funcionó. Aquí hay una documentación: [http://www.rubydoc.info/github/thoughtbot/paperclip/Paperclip%2FAttachment%3Aurl](http://www.rubydoc.info/github/thoughtbot/paperclip/Paperclip%2FAttachment%3Aurl) –

5

Desactivado globalmente a apagado, simplemente ponga esto en un archivo config/initializers/paperclip.rb.

Paperclip::Attachment.default_options[:use_timestamp] = false

Cuestiones relacionadas