【问题标题】:Rails Images not showing, code looking for images with file name ._image.jpgRails 图像未显示,代码查找文件名为 ._image.jpg 的图像
【发布时间】:2014-05-01 11:11:57
【问题描述】:

在我的应用程序中,我在主页上显示了一系列图像。这些图片大小相同,命名为 new1.jpg - new17.jpg,存储在 /public/images/rotate

我正在使用一些在网上找到的代码来显示随机选择的图像。这是我正在使用的:

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 %>"/>

当我在 web 上将代码推送到我的服务器上时,这可以完美地在我的 mac 上本地运行,加载一半的图像,而另一半(数字似乎发生变化)显示损坏的图像。

查看源代码时,所有工作的图像都在看/public/images/rotate/new1.jpg等,所有损坏的图像都在看/public/images/rotate/._new10.jpg等 它们的文件名前都有一个'._'

谁能帮我解释一下?

非常感谢

【问题讨论】:

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

标签: ruby-on-rails image asset-pipeline imagesource


【解决方案1】:

试试这样:

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

由于Dir 采用glob,* 将匹配所有文件,但不包括点文件。然后,您可以要求任何允许的扩展名。见这里:http://ruby-doc.org/core-2.0/Dir.html#method-c-glob

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 2013-12-03
      • 2021-10-12
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 1970-01-01
      相关资源
      最近更新 更多