【问题标题】:Ruby - Iterate through every file in a directory and add to pageRuby - 遍历目录中的每个文件并添加到页面
【发布时间】:2023-03-16 20:30:01
【问题描述】:

我想遍历一个 .png 图标的目录并将它们添加到一个独立页面上。我还想在每个下面暴露​​.png的文件名。

简而言之,这应该成为显示我当前在开发环境中使用的所有图标的自动化功能,因此我可以将此独立页面用作图标目录。

我是非常 Ruby 新手,但我的问题首先导致了我这篇文章,但还远远不够: Iterate through every file in one directory

我的(基本的内联 HTML),目前为止的尝试:

<ul>

    <% Dir.glob('/assets/css/img/png/*.png') do |icon| %>

        <li> <%= "#{icon}" %> </li>

    <% end %>

</ul>

非常感谢任何帮助。

【问题讨论】:

  • 代码有什么问题?
  • 看起来您正在插入变量图标。 |icon| 有什么特别的原因吗?需要加引号吗?不是图吗?你得到什么样的错误?如果您只是在 html 上看到一堆文本,那么我很有可能会假设它正在将图标路径返回到您的 html,而不是实际图像。我们能否看到您遇到的错误,以便我们了解更多信息以了解发生了什么?
  • @wavemode - 我的代码根本没有产生任何结果!很抱歉无法提供更好的工作平台。

标签: html ruby


【解决方案1】:

我不是专家,因此我们将不胜感激。我只能通过提供目录的绝对路径来让 Ruby Dir.glob() 进行迭代。我正在使用 Rails 4.0.8。这对我有用:

<ul>
  <% Dir.glob("#{Rails.root}/app/assets/images/*.png") do |icon| %>
      <% icon_base = File.basename(icon) %>
      <li><%= link_to icon_base, image_url(icon_base) %></li>
  <% end %>
</ul>

这会生成指向/assets/images 中所有PNG 图像的超链接列表。

【讨论】:

  • 感谢您的帮助,但不幸的是我没有使用 Ruby on Rails - 对我来说只是普通的旧 Ruby。
  • 对不起,我的困惑,虽然我仍然想帮忙。您能否提供有关您的运行环境的其他上下文?你用的是什么宝石?您是在运行 Web 服务器,还是只是在浏览器上打开 html?你渲染嵌入式红宝石的过程是什么?
【解决方案2】:

您提供了 Dir.glob 的绝对路径,因此它不会相对于您的 Rails 项目目录。

尝试在 Rails 根路径前添加有效的绝对路径。

Dir.glob(Rails.root + "/assets...等

【讨论】:

  • 感谢您的帮助,但不幸的是我没有使用 Ruby on Rails - 对我来说只是普通的旧 Ruby。
  • 啊,那么要么尝试删除第一个斜线,要么使用 Dir.pwd 代替 Rails.root
猜你喜欢
  • 1970-01-01
  • 2021-01-16
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 2011-12-29
  • 2019-01-16
  • 2021-03-09
  • 2017-11-15
相关资源
最近更新 更多