我在我的rails项目中使用语法高亮笔"白化",但它没有显示任何东西
下面我写了代码
在帮助程序模型中
def highlight(text)
Albino.new(text, :ruby)
end
在视图中
<% @codes.each do |code| %>
<%= highlight(code) %>
<% end %>
所以任何人都可以帮助我哪里出错 或者建议任何好的荧光笔宝石用于导轨?
你得到哪些错误?
@codes后,您缺少.
:
<% @codes.each do |code| %>
<%= highlight(code) %>
<% end %>
,您的助手正在创建一个新的白化病实例,但没有实际要求它突出显示语法。
按如下方式更改助手:
def highlight(text)
Albino.colorize(text, :ruby)
end
您是否考虑过使用Google Code Prettify?这是Google Code和Stack Overflow上使用的语法突出显示器,这可能意味着它相当健壮。
我通常不喜欢在 JavaScript 中放置太多功能,但在我看来,语法突出显示是以这种方式添加的合理功能 - 毕竟代码在没有突出显示的情况下仍然可以阅读。
这是一个有点老的问题,但我自己也遇到了。
问题是Albino在解析HTML时直接输出HTML(我认为这是正确的词,我对此很陌生)。
例如:
highlight(text)
文本是:
def hello_world
puts "Hello World!".to_s
end
将导致:
<div class="highlight"><pre><span class="k">def</span> <span class="nf">hello_world</span> <span class="nb">puts</span> <span class="s2">"Hello World!"</span><span class="o">.</span><span class="n">to_s</span> <span class="k">end</span> </pre> </div>
需要做的是将 .html_safe 添加到您的突出显示方法中。
Albino.colorize(text).html_safe
这应该行得通。