在Rails中将truncate与Redcarpet markdown结合使用:链接不起作用

时间:2015-09-29 17:38:49

标签: ruby-on-rails ruby ruby-on-rails-3 link-to redcarpet

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

在我的帖子/ index.html.erb中,我想截断博客文章,以便预览前几个句子(或段落)。用户应该能够点击截断帖子末尾的“阅读更多”来阅读整篇博文。不幸的是,“阅读更多”链接不适用于Redcarpet(当我不使用我的降价方法(见下文)时,链接工作正常)。我该如何解决这个问题?我是否必须在Redcarpet中使用其他选项?

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

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”给了我帖子的路径。

“阅读更多”文字正在显示,但您无法点击它。当我退出“降价”方法时,“阅读更多”-link工作正常。

如何使用“markdown”-method创建链接?

1 个答案:

答案 0 :(得分:1)

该链接不是Markdown,而是HTML。也许把它改成Markdown?

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

如果不正确,请将post_path更改为适当的内容。