Coderay渲染奇怪的符号

时间:2015-04-27 17:24:15

标签: ruby-on-rails ruby

我在我的Rails 4.1.4项目中使用Coderay 1.1.0来渲染以语法为主的代码块。

原始代码如下所示:

Book = Struct.new(:title, :episodes)
book = Book.new("Harry Potter", 7)

book
# => #<struct Book title="Harry Potter", episodes=7>

book.title
# => "Harry Potter"
book[:title]
# => "Harry Potter"
book["title"]
# => "Harry Potter"

我用

CodeRay.scan(code, :ruby).html(:css => :class)

但结果如下:

Book = Struct.new(:title, :episodes)
book = Book.new("Harry Potter", 7)

book
# =&gt; #&lt;struct Book title="Harry Potter", episodes=7&gt;

book.title
# =&gt; "Harry Potter"
book[:title]
# =&gt; "Harry Potter"
book["title"]
# =&gt; "Harry Potter"

很多奇怪的符号出现了。无法弄清楚该怎么做。任何关于解决问题的建议都表示赞赏。

2 个答案:

答案 0 :(得分:0)

将输出标记为html_safe,然后Rails不会转义特殊字符:

CodeRay.scan(code, :ruby).html(:css => :class).html_safe

答案 1 :(得分:0)

html_safe在视图上正确呈现html内容,但在我的情况下它不会删除奇怪的字符串。但是,事实证明Coderay在我的代码中添加了一些内容,因此html_safe方法无法成功转义符号。我不知道它来自哪里,但您可以在以下代码中看到amp;子字符串:

code.gsub!("&amp;quot;", "&quot;") 
code.gsub!('&amp;#39;' , "&#39;" ) 
code.gsub!('&amp;gt;'  , "&gt;"  ) 

因此,我删除了要插入的每个标点和符号中的amp;子字符串,html_safe方法将成功呈现内容。