【问题标题】:Rails How To List all Images in a Folder using the image_tag?Rails 如何使用 image_tag 列出文件夹中的所有图像?
【发布时间】:2012-12-29 11:15:11
【问题描述】:

我正在尝试获取“app/assets/images/slide”文件夹中的所有图像并将它们与标签一起放置(按顺序)。所以,它看起来像这样:

<img src="1.jpg" >
<img src="2.jpg" >
<img src="3.jpg" >

我怎样才能做到这一点? (我使用的是 Rails 3.2.9)

这是我尝试过的代码(感谢 Khaled)。但它会输出所有图像路径的纯文本列表。我需要显示图片:

@images = Dir.glob("app/assets/images/slide/*.jpg")

@images.each do |image|
    image_tag image.gsub("app/assets/images/", "")
end

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3.2


    【解决方案1】:

    在您的控制器操作中,获取所有图像路径。

    @images = Dir.glob("app/assets/images/slide/*.jpg")
    

    那么在你看来(假设 haml)

    - @images.each do |image|
       = image_tag "slide/#{image.split('/').last}"
    

    假设 erb

     <% @images.each do |image| %>
       <%= image_tag "slide/#{image.split('/').last}" %>
     <% end %>
    

    【讨论】:

    • 它只打印一个图像路径列表,如下所示:["app/assets/images/slide/6.jpg", "app/assets/images/slide/1.jpg", " app/assets/images/slide/3.jpg”、“app/assets/images/slide/7.jpg”、“app/assets/images/slide/2.jpg”、“app/assets/images/slide/ 5.jpg”、“app/assets/images/slide/8.jpg”、“app/assets/images/slide/4.jpg”]
    • 您确定您使用的是image_tag 助手吗?
    • 这是我尝试过的代码(我使用 .html.erb) images = Dir.glob("app/assets/images/slide/*.jpg") images.each do |image| image_tag 图片结束
    • 非常感谢 :) 在您的代码中,image.split 不起作用。但是我改为添加了“image_tag image.gsub("app/assets/images/", "")" 并且它起作用了!非常感谢!
    • @marczking:我想你是对的,但这里的名字是无关紧要的,我试图举一个与所问问题一样接近的例子,所以我会坚持使用“幻灯片”这个例子。
    【解决方案2】:

    为保证运行,可以使用:

    @images = Dir.glob("#{Rails.root}/app/assets/images/camisas/*.jpg")
    

    【讨论】:

      【解决方案3】:

      为我工作并显示图像:

      Dir.glob('app/assets/images/slide/*').map do |path| 
        image_tag "slide/#{ File.basename(path) }"
      end.reduce(&:+)
      

      您想摆脱 File#basename 的完整路径,以便它与预编译资产 afaik 一起使用。您也不需要指定 .jpg,因为它是一个图像文件夹,并且可以有 .png。

      【讨论】:

      • 仅供参考,'image_tag' (iamge_tag) 中有错字。
      【解决方案4】:
      files = Dir.glob('app/assets/images/slide/*')
      files.each do |file|
        puts file
      end
      

      【讨论】:

        【解决方案5】:

        从文档中,image_tag 返回源的 html 图像标记。它不能一次显示所有图像。您应该创建一个自定义助手来阅读和遍历您的目录。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-11
          • 1970-01-01
          • 2012-08-12
          • 1970-01-01
          • 2013-10-23
          • 1970-01-01
          • 2015-09-29
          • 1970-01-01
          相关资源
          最近更新 更多