您可以使用Dir.glob
做到这一点很容易地和阵列.sample
和.split
方法。
比方说,我有一个在我的Rails图像资产文件夹名为./backgrounds
文件夹中所有随机图像:
app/assets/images/
└── backgrounds
├── beach.jpeg
├── bright-flowers-pink-skies.jpeg
├── fall-autumn-red-season.jpg
└── fjord.jpeg
我可以在./app/helpers/application_helpers.rb
创建一个帮手 - 或者任何你想放helper-具有以下代码:
module ApplicationHelper
def get_random_image
image_path_prefix = "app/assets/images/"
image_files = Dir.glob("#{image_path_prefix}backgrounds/*")
image_files.sample.split(image_path_prefix)[1]
end
end
这样做是水珠所有的./app/assets/images/backgrounds
内的路径,返回一个随机(使用.sample
),通过分割字符串删除图像路径前缀,返回它的结束部分。
然后在你的ERB模板,你可以像这样显示图像:
<%= image_tag get_random_image %>
这将导致图像标签用于生成一个随机的图像。注意要注意引导和尾随的斜杠。
太棒了...谢谢!!! –
这是相当不错的,但它没有考虑到其他文件格式,在某些情况下,由于格式改变,质量会丢失。 – Vantalk
最近的rails版本不需要你指定扩展名,所以这是一个选项。但是我也会在下面看看@ bevanb的答案。我不确定在这样的操作中从文件系统中读取性能的后果,但如果这是您的格式更改意味着您肯定不会遇到扩展问题。 – hiattp