1

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

谢谢,

尼古拉斯·霍克·伊萨萨

4

4 回答 4

4

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

:default_url => lambda { "path/to/images/#{rand(5)}.jpg" }
于 2010-09-16T00:05:10.083 回答
3

将 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.
于 2011-10-18T22:01:51.733 回答
1

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

:default_url => "路径/到/图像/#{rand(5)}.jpg"

没有 lambda ;-)

非常感谢你!

于 2009-12-15T19:16:16.793 回答
0

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

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

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

于 2009-12-15T19:01:12.343 回答