我有一个充满部分的目录。我希望仅列出每个部分中的第一个 h1 标签。完成此任务的方法可能也可以修改为抓取其他元素。
现在我使用 ruby 打开每个文件,打印出前几个字符,关闭文件,然后重复。我的 ruby 文件解析技能限制了我。这是我目前拥有的代码:
<% Dir["app/views/partials/show/*.html.erb"].each do |f1| %>
<% aFile = File.open(f1, "r") %>
<% if aFile %>
<% content = aFile.sysread(20) %>
<p><%= content %></p>
<% else %>
<%= "Unable to open file!" %>
<% end %>
<% end %>
我还认为我要在内存中打开整个部分?想知道我是否可以阅读直到找到我的 h1 标签然后关闭文件并继续?同样,我只阅读前 20 个字符,因为我还没有掌握搜索第一个 h1 标签的方法。
我将在完成开放、解析、片段的工作时进行编辑......我感谢您提供的任何指导和指导。谢谢!
编辑: 根据下面的评论,可能有更好的方法来完成我的任务。因此,我提供了一些额外的背景知识来指导其他解决方案。
这是基于目录中的部分的幻灯片放映。幻灯片放映由导航元素控制,我想通过部分中的 h1 标签填充该导航元素。我不会在每次进行更改时手动输入这些内容!我希望最终用户只需将部分内容拖放到目录中(具有特定的名称约定和用于导航的 h1 标记描述),然后让幻灯片放映完成其他所有操作。
我可以在 h1 标签“forNavigation”和内容“sliderContent”上强加一个类,然后使用 jquery 创建一个后加载<ul>
,但这似乎不正确。另外,它们都将成为同一个渲染 div 的一部分。
我想我不清楚为什么读取部分的前 50 个字符、复制 h1 标签中的内容并将其放入 a 不是最优雅的解决方案?
就像我说的那样,除了复制和打印第一个 h1 标签之间的内容之外,上面做了所有需要的事情......使用 xml 解析器或一些正则表达式就可以完成。我只是不擅长解析文件。
请让我知道解决此问题的其他方法。现在我仍然认为最好解析部分(有或没有渲染)并根据需要将我需要的东西放在我想要的地方。