0

我有一个充满部分的目录。我希望仅列出每个部分中的第一个 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 解析器或一些正则表达式就可以完成。我只是不擅长解析文件。

请让我知道解决此问题的其他方法。现在我仍然认为最好解析部分(有或没有渲染)并根据需要将我需要的东西放在我想要的地方。

4

1 回答 1

0

部分并不意味着“解析”,而是要在其他部分和模板中呈现。如果您需要获取部分的一部分,您可能应该将该部分提取为进一步的部分,并在“列出”部分和“聚合”视图中使用该内部部分。

于 2012-10-30T15:46:11.920 回答