逃脱html里面代码块markdown redcarpet gem rails 4

时间:2014-12-20 20:31:56

标签: ruby-on-rails markdown redcarpet

我刚刚安装了redcarpet gem markdown,所有工作正常,除了代码块,它无法正常工作。

```@font-face {</div><div>&nbsp; font-family: 'Glyphicons Halflings';</div><div>&nbsp; src: font-   url('glyphicons-halflings-regular.eot');</div><div>&nbsp; src: font-url('glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), font-url('glyphicons-halflings-regular.woff') format('woff'), font-url('glyphicons-halflings-regular.ttf') format('truetype'), font-url('glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');</div><div>}```

当你看到它在代码块中添加html作为原始文本时,所以如果我写:

```my code here
another code```

它会外出:

```my code here<br>another code```

如何解决这个问题?

在我的application_helper.rb中,我有:

def markdown(text)
  options = {
   filter_html:     false,
   hard_wrap:       true,
   link_attributes: { rel: 'nofollow', target: "_blank" },
   space_after_headers: true,
   fenced_code_blocks: true
  }

  extensions = {
   autolink:           true,
   no_intra_emphasis: true,
   superscript:        true,
   highlight: true,
   strikethrough: true,
   quote: true,
   no_images: true,
   no_styles: true,
   prettify: true,
   superscript: true,
   footnotes: true,
   tables: true
 }

  renderer = Redcarpet::Render::HTML.new(options)
  markdown = Redcarpet::Markdown.new(renderer, extensions)
  markdown.render(text).html_safe

在我的view.html.erb中,我有:

<p class="body">
 <%= markdown(@post.body).html_safe %>
</p>

1 个答案:

答案 0 :(得分:0)

在bootsy gem和redcarpet gem之间存在问题。我终于通过删除bootsy gem以及与之相关的所有内容来修复它并坚持使用redcarpet gem。似乎.html_escape在使用两个宝石时都会发生冲突。不管怎样,谢谢!