7

我正在使用 Paperclip-FFMEG 将视频文件上传到我的开发环境(最终,当我的项目投入生产时,上传到本地服务器)。

上传视频时,文件名默认如下:

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

我相信问号后面的 10 位数字是时间戳。

但是,我将用来播放视频的播放器不喜欢在文件附件之后有任何内容 - 所以我想在将 URL 传递给播放器之前去掉问号和它后面的时间戳。

我尝试使用以下 Ruby(我认为)剥离函数:

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

然而,Rails 抛出了一个错误:

wrong number of arguments(1 for 0)

我认为我做错了吗?还有其他解决方案吗?我不想完全关闭时间戳,因为我只需要在这种情况下这样做。

谢谢!

4

4 回答 4

18

如果您想为给定的附件在任何地方执行此操作并且不需要传递额外的参数,则可以use_timestamp在调用has_attached_file模型中的方法时设置该选项。因此,以 Paperclip README 中给出的示例为基础:

has_attached_file :avatar,
  :styles => { :medium => "300x300>", :thumb => "100x100>" },
  :default_url => "/images/:style/missing.png",
  :use_timestamp => false
于 2013-05-02T14:55:56.283 回答
7

希望这可以作为我自己问题的答案(因为它可能对偶然发现这篇文章的其他人有用),但我后来发现处理这个问题的另一种(更合适的)方法是在视图中显示内容时,将false参数添加到 URL(),如下所示:

model.paperclipattribute.url(:whateverstyle, false)

时间戳将被自动删除。我认为这更好,因为split我建议的方法可能会删除您不打算删除的内容 - 例如,如果您的文件名为“Is_this_a_question_?_Yes_it_is.mp4?xxxxxx”,那么第一个问号之后的所有内容可能被删除(即文件将被读取为“这是一个问题_”,从而损坏文件名。

我没有测试过这个,所以我可能是错的。

于 2012-08-09T10:28:08.223 回答
5

全局默认它们为关闭,只需将其放在 config/initializers/paperclip.rb 文件中。

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

于 2014-01-30T18:02:06.073 回答
2

你想split改用我相信。strip 不接受任何参数,它只是删除前导和尾随空格

于 2012-08-03T19:42:41.403 回答