2014-05-01 16 views
1

在我的应用程序中,我在主页上显示一系列图像。这些图像都是相同的大小,并被命名为new1.jpg - new17.jpg并存储在/ public/images/rotateRails未显示图像,代码正在寻找带有文件名的图像._image.jpg

我使用一些在线发现的代码来显示随机选择的图像。这是我使用的是什么:

def random_image 
    image_files = %w(.jpg .gif .png) 
    files = Dir.entries(
    "#{Rails.root}/public/images/rotate" 
).delete_if { |x| !image_files.index(x[-4,4]) } 
    files[rand(files.length)] 
end 

然后在我的部分:

<img src="/images/rotate/<%= random_image %>"/> 

这工作完全在我的Mac上轨服务器在本地运行,当我在代码推到我的服务器网页的一半图像加载,另一半(数量似乎改变)显示一个破碎的图像。

在查看源代码,这项工作的所有图像都在看/public/images/rotate/new1.jpg等,所有破碎的形象正在寻找/public/images/rotate/._new10.jpg等 它们都具有文件名之前'._'

任何人都可以请摆脱这个对我来说?

非常感谢

+0

是否有任何机会在文件夹中的任何隐藏的图像,与'。'字首? – Iceman

+0

@Iceman是的,当我查看服务器并运行ls -a时,我可以看到每个文件都有一个以._example.jpg开头的隐藏文件,当我的代码查找all.jpgs时,它试图显示这些图像太。我如何将隐藏的文件列入黑名单或防止这种情况发生? –

回答

0

结束创建一些代码,删除目录中以._开头的所有隐藏文件。然后它只输出正确的图像。

1

尝试这样的:

def random_image 
    File.basename(Dir["#{Rails.root}/public/images/rotate/*.{png,gif,jpg}"].sample) 
end 

由于Dir需要水珠,*将匹配所有文件,但不包括点文件。然后你可以要求任何允许的延期。看到这里:http://ruby-doc.org/core-2.0/Dir.html#method-c-glob