我在我的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
# => #<struct Book title="Harry Potter", episodes=7>
book.title
# => "Harry Potter"
book[:title]
# => "Harry Potter"
book["title"]
# => "Harry Potter"
很多奇怪的符号出现了。无法弄清楚该怎么做。任何关于解决问题的建议都表示赞赏。
答案 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!("&quot;", """)
code.gsub!('&#39;' , "'" )
code.gsub!('&gt;' , ">" )
因此,我删除了要插入的每个标点和符号中的amp;
子字符串,html_safe
方法将成功呈现内容。