在 Rails 中将 truncate 与 Redcarpet markdown 结合使用:链接无效

Combining truncate with Redcarpet markdown in Rails: Links don't work

我在 Rails 博客应用程序中使用 Redcarpet 进行语法高亮显示。

在我的 posts/index.html.erb 中,我想截断博客 post 以预览前几句话(或段落)。用户应该能够单击截断 post 末尾的 "read more" 以阅读整个博客 post。不幸的是,"read more" link 不能与 Redcarpet 一起使用(当我不使用我的降价方法(见下文)时,link 工作正常)。我该如何解决?我必须在 Redcarpet 中使用其他选项吗?

我在 /helpers/application_helper.rb 中使用 Redcarpet 的降价方法:

def markdown(content)
  renderer = HTMLwithPygments.new(hard_wrap: true, filter_html: true)
  options = {
    autolink: true,
    no_intra_emphasis: true,
    disable_indented_code_blocks: true,
    fenced_code_blocks: true,
    lax_html_blocks: true,
    strikethrough: true,
    superscript: true
  }

  Redcarpet::Markdown.new(renderer, options).render(content).html_safe
end

/views/posts/index.html.erb

<%=  markdown (truncate(post.content, 
                        length: 600, 
                        separator: ' ',
                        omission: '... ') {
                        link_to "read more", post 
               }) %>

顺便说一下:我正在遍历 @posts 变量,所以 "post.content" 给我一个 post 的内容,而 "post" 给我 post的路径。

"read more" 文本正在显示,但您无法单击它。当我离开 "markdown" 方法时,"read more"-link 工作正常。

如何使用 "markdown" 方法创建 link?

虽然 link 不是 Markdown,它是 HTML。也许将其更改为 Markdown?

<%= markdown(truncate(post.content, length: 600,
                      separator: ' ', omission: '... ') {
             "[read more](#{post_path(post)})"
    }) %>

如果不对,请将 post_path 更改为合适的内容。