【问题标题】:Multiple Paperclip default_urls多个回形针 default_urls
【发布时间】:2009-12-15 18:52:24
【问题描述】:

我正在使用 Paperclip 将图像上传到我的项目模型,并且我想要一组默认图像(不取决于样式,而是不同的图像),这可能吗?将一个数组而不是一个 URL 传递给 :default_url 选项?

谢谢,

尼古拉斯·霍克·伊萨扎

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-plugins paperclip


    【解决方案1】:

    如此接近:如果您希望图像随机更改,而不仅仅是在第一次加载模型时:

    :default_url => lambda { "path/to/images/#{rand(5)}.jpg" }
    

    【讨论】:

      【解决方案2】:

      将 rand(5) 放入 default_url proc 将在每次创建新模型对象时分配一个随机图像。

      如果您希望随机分配图像并且每个项目都应保留分配的图像,您可以这样做:

      has_attached_file :something,
        :default_url => lambda { |av| "/images/img_#{av.instance.default_image_number}.png" }
      
      def default_image_number
        id.to_s.last
      end
      

      此示例允许您有 10 个稍微随机的默认图像,它们对于每条记录保持相同:

      # img_0.png, img_1.png, etc.
      

      【讨论】:

        【解决方案3】:

        好吧,我没有使用 lambda 函数,但我从 Ben 的回答中得到了这个想法。我只有文件(0.jgp,1.jpg ...),然后我就可以拥有

        :default_url => "path/to/images/#{rand(5)}.jpg"

        没有 lambda ;-)

        非常感谢!

        【讨论】:

        • 图片是随机切换的吗?我希望 rand() 值只会在第一次加载模型时被解释。尝试在生产环境中运行它并查看图像是否切换。
        • 它们不会随机切换,只会在第一次按预期加载模型时切换。
        • 每次加载新模型时,它们肯定会随机切换,例如每次页面加载。
        【解决方案4】:

        不知道这是否可行,但值得一试。将图片 0.png, 1.png, 2.png, 3.png, 4.png 放到磁盘上,然后放到你的模型中:

        has_attached_file :image,
          lambda {{
            :default_url => "path/to/images/#{rand(5)}.png"
          }}
        

        将您的其他选项也放入 lambda 中。

        【讨论】:

        • 我试图完成这项工作,但得到了unexpected '\n', expecting tASSOC。不确定语法错误在哪里。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-17
        • 1970-01-01
        • 2012-06-10
        • 2013-10-20
        • 2013-07-31
        相关资源
        最近更新 更多