我在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创建链接?
答案 0 :(得分:1)
该链接不是Markdown,而是HTML。也许把它改成Markdown?
<%= markdown(truncate(post.content, length: 600,
separator: ' ', omission: '... ') {
"[read more](#{post_path(post)})"
}) %>
如果不正确,请将post_path
更改为适当的内容。