我正在制作一个带有背景图片的页面,我想让背景图像自动更改。 图像已经保存在目录中。
一种可能的解决方案是设置一个BackgroundImage类,并将这些图像记录在数据库中,所以@backgroundimage = BackgroundImage.all.shuffle.first
,然后在img_tag @backgroundimage
另一种方法是<img src='backgroundimages/image#{@random-number}>
?我认为如果我将这些图像命名为image1,image2
,并且每次在控制器中获取一个随机数,这是可能的。但它需要手动重命名图像。
答案 0 :(得分:1)
您可以将图像放在一个文件夹中,然后读取所有文件名并返回一个随机图像名称,这样您就不需要命名模式或数据库支持的模型。像这样:
def random_image
blacklist = [".", ".."]
file_names = Dir.glob("/path/to/images/*")
blacklist.each do |blacklsited|
file_names.delete(blacklisted)
end
"/webserver/path/to/images/{files.shuffle.first}"
end
因此,在视图中,您可以调用辅助方法random_image
。
答案 1 :(得分:0)
试试这个
BackgroundImage.order("RAND()").limit(1)
取决于您的数据库,它可能是'RANDOM()'或类似的东西
它生成像这样的SQL查询
SELECT "background_images".* FROM "background_images" ORDER BY RAND() LIMIT 1