【问题标题】:Carrier Wave Version Store URL载波版本商店 URL
【发布时间】:2013-07-07 23:22:48
【问题描述】:

我正在尝试为上传到载波的文件设置 store_dir,但我想要一个特定的 url 结构(就像我使用回形针一样)。我有两个版本:main 和 :thumb,但似乎使用 model.id 存储的 url 是 /MODEl/ID/VERSION_IMAGENAME.FILETYPE。我试图弄清楚如何将 url 构造为 /MODEL/ID/VERSION/IMAGENAME.FILETYPE,但我没有任何运气。有什么帮助吗?

示例网址:

/event/1/main_IMG1922.JPG,但我想要/event/1/main/IMG1922.JPG。

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 carrierwave


    【解决方案1】:

    您可以覆盖full_filenamefull_original_filename 方法,如carrierwave wiki page 所示

    这是他们展示的将文件名从 version_foo.jpg 更改为 foo_version.jpg 的示例。自定义它以满足您的需求。

    module CarrierWave
      module Uploader
        module Versions
          def full_filename(for_file)
            parent_name = super(for_file)
            ext         = File.extname(parent_name)
            base_name   = parent_name.chomp(ext)
            [base_name, version_name].compact.join('_') + ext
          end
    
          def full_original_filename
            parent_name = super
            ext         = File.extname(parent_name)
            base_name   = parent_name.chomp(ext)
            [base_name, version_name].compact.join('_') + ext
          end
        end
      end
    end
    

    【讨论】:

    • 我会在初始化程序中创建该文件吗?我可以看到让它工作,但 wiki 没有指定文件名或位置来放置覆盖这些方法的文件。
    • 在哪里放置猴子补丁的文件是有争议的。但它应该在初始化程序中工作。这是一个相关的 SO 问题/答案stackoverflow.com/questions/3420680/monkey-patching-in-rails-3
    猜你喜欢
    • 2013-06-23
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 2022-08-19
    • 2017-07-15
    相关资源
    最近更新 更多