【问题标题】:Generate a dynamic table of contents based on (already) rendered headings with Rails使用 Rails 根据(已经)呈现的标题生成动态目录
【发布时间】:2014-06-27 12:51:09
【问题描述】:

许多 Wiki 都有它,一个基于显示页面标题的目录。我正在寻找一种通过 Rails 实现这一点的简单方法。

我有不同类型的页面,例如动态生成的页面、已处理的降价页面以及静态页面。所有这些页面都有不同级别的 HTML 标题。 如何生成类似于 Wiki 的目录,该目录链接到带有锚点的标题?

我已经搜索了渲染后回调或生命周期中的另一个入口点,这是在渲染之后发生的,但我并没有真正找到。你会建议做什么? .. 实现一个中间件或者你的方向是什么?

【问题讨论】:

  • 你会考虑在页面发送到浏览器后使用 JavaScript 来做吗? Chris Coyier 关于目录是“奖励”的论点令人信服:css-tricks.com/automatic-table-of-contents
  • 感谢您的评论@Chris。我考虑过这个。我唯一反对的观点是,如果用户禁用了 JavaScript,则用户根本看不到目录。也许已经没有这样的用户了,我应该走那条路(?),因为这个“主题”无论如何都与 JavaScript 密切相关。我仍然希望有人拥有 Rails 解决方案。
  • 关键是这种事情可以被视为渐进增强。如果没有目录,该页面仍然可以正常工作。 (并且在可访问性方面,只要您使用标题标签,该页面仍然可以访问。)祝您找到 Rails 解决方案,如果这是您真正需要的!

标签: ruby-on-rails ruby-on-rails-4 haml markdown templating


【解决方案1】:

如果您决定对所有内容坚持使用降价,您可以使用 Redcarpet gem 来做到这一点。将with_toc_data: true 传递给渲染器将向标题标签添加锚点。使用Redcarpet::Render::HTML_TOC 重新渲染将生成链接到这些标题标签的链接列表。

【讨论】:

    猜你喜欢
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    相关资源
    最近更新 更多