2015-04-27 2 views
-1

Я использую Coderay 1.1.0 в моем проекте Rails 4.1.4 для выделения выделенного кода синтаксиса.Coderay отрисовка странных символов

Исходный код выглядит следующим образом:

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" 

Много странных символов просто показать. Не могу понять, что делать. Любое предложение по решению проблемы приветствуется.

ответ

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 метод будет успешно отображать содержимое.

0

Отметить выход как html_safe, то Rails не избежит специальные символы:

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

Спасибо, но это все равно. Там все еще есть. Я также пытался использовать консоль rails, но что-то вроде «CodeRay.scan (« # => hello »,: ruby) .html.html_safe' будет производить' ' # = > hello" 'String, в котором' > 'не экранируется. –