2012-08-03 7 views
5

Ich verwende Paperclip-FFMEG, um Videodateien in meine Entwicklungsumgebung (und eventuell auf einen lokalen Server, wenn mein Projekt in Produktion geht) hochzuladen.Fragezeichen aus Paperclip-generierten Dateien in Ruby on Rails entfernen 3.2.6

Wenn Videos hochgeladen werden, der Dateiname ist standardmäßig wie folgt:

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

ich die 10-stellige Zahl nach dem Question glaube, dass ein Zeitstempel ist.

Der Player, den ich zum Abspielen der Videos verwenden möchte, möchte jedoch nichts nach dem Dateianhang haben - daher möchte ich das Fragezeichen und den Zeitstempel danach entfernen, bevor ich die URL in den Player übertrage .

Ich habe versucht, die folgende Rubin (glaube ich) Streifen-Funktion:

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

jedoch Rails einen Fehler wirft:

wrong number of arguments(1 for 0) 

Ich nehme ich das falsch gemacht? Irgendwelche anderen Lösungen? Ich möchte Timestamps nicht komplett ausschalten, da ich das nur in dieser Situation tun muss.

Danke!

Antwort

16

Wenn Sie dies tun wollen Überall für einen bestimmten Anhang und ohne die Notwendigkeit, den zusätzlichen Parameter zu übergeben, können Sie die Option beim Aufruf der has_attached_file Methode in Ihrem Modell.So, um das Beispiel in der Büroklammer README:

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

Sie möchten stattdessen split verwenden, glaube ich. Streifen nimmt kein Argument, es entfernt nur führende und nachfolgende Leerzeichen

+0

Brilliant, wusste ich es etwas einfach war! Vielen Dank! – Graeme

+0

@Graeme Achten Sie darauf, diese Antwort zu akzeptieren, indem Sie auf das Häkchen neben der Punktzahl klicken, wenn es für Sie funktioniert! – slhck

6

Hoffe, das ist OK, als Antwort auf meine eigene Frage (wie es nützlich sein kann für andere, die über diesen Beitrag stolpern), aber ich da entdeckt hat, dass eine Alternative (und besser geeignet) Art und Weise mit diesem Problem umzugehen ist, die false Parameter URL() wie folgt hinzufügen, wenn Sie den Inhalt Ihrer Ansicht Anzeige:

model.paperclipattribute.url(:whateverstyle, false) 

Der Zeitstempel automatisch sein wird entfernt. Ich denke, das ist besser, da die von mir vorgeschlagene Methode split möglicherweise Inhalte entfernt, die Sie nicht entfernen möchten - zum Beispiel, wenn Ihre Datei etwas wie "Is_this_a_question _? _ Yes_it_is.mp4? Xxxxxx" heißt, dann alles nach dem ersten Fragezeichen könnte entfernt werden (dh die Datei als gelesen wird: „Ist das ein question_“, also den Dateinamen korrumpieren.

ich nicht getestet haben, so kann ich mich irren.

+0

Danke, +1, es hat funktioniert. Hier ist eine Dokumentation: [http://www.rubydoc.info/github/thoughtbot/paperclip/Paperclip%2FAttachment%3Aurl](http://www.rubydoc.info/github/thoughtbot/paperclip/Paperclip%2FAttachment%3Aurl) –

5

Setzen Sie sie global standardmäßig auf "off", fügen Sie das in eine Datei config/initializers/paperclip.rb ein.

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