您可以使用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