「白化」下面我在助手模型編寫的代碼Rails的語法高亮白化病不工作
我我的Rails項目,但它不顯示任何東西
def highlight(text)
Albino.new(text, :ruby)
end
在視圖
<% @codes.each do |code| %>
<%= highlight(code) %>
<% end %>
所以任何一個可以幫助我在哪裏我錯了 或建議任何良好的鐵欄熒光筆寶石?
「白化」下面我在助手模型編寫的代碼Rails的語法高亮白化病不工作
我我的Rails項目,但它不顯示任何東西
def highlight(text)
Albino.new(text, :ruby)
end
在視圖
<% @codes.each do |code| %>
<%= highlight(code) %>
<% end %>
所以任何一個可以幫助我在哪裏我錯了 或建議任何良好的鐵欄熒光筆寶石?
你會得到哪些錯誤?
你@codes後缺少一個.
:
<% @codes.each do |code| %>
<%= highlight(code) %>
<% end %>
對不起,我忘記寫在這裏,但在我的代碼中,我寫了它正確。我現在編輯了我的問題 – sharath 2011-05-10 10:53:49
它看起來對我來說,你的助手正在創造一個新的白化實例,但不使用實際上要求它的語法高亮顯示。
def highlight(text)
Albino.colorize(text, :ruby)
end
...或者可能不是。剛注意到文檔引用了你所做的一切,因爲庫在Albino對象上添加了to_s方法。奇怪的 :( – 2011-05-10 11:24:38
你有沒有考慮過使用Google Code Prettify:
如下更改您的幫手?它是谷歌代碼和堆棧溢出使用的語法高亮器,這很可能意味着它相當健壯。
我通常不喜歡把太多的功能在JavaScript中,但在我看來,語法高亮是一個合理的功能,以這種方式添加 - 畢竟代碼仍然是沒有突出可讀性。
這是一個老問題,但我只是自己碰到它。
的問題是,白化直接輸出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
這應該工作。
您能否確切地確認症狀是什麼?你是否看到一個錯誤,或者只是在響應中沒有任何內容?你有沒有檢查過'代碼'實際上有你期望的嗎? (即採取亮點調用出來,看看你得到非高亮文本) – 2011-05-10 11:46:12
它是深藏不露。當我刪除突出顯示呼叫我收到非高亮文本。 – sharath 2011-05-11 06:38:50
我可以確認Albino.colorize總是返回一個空字符串(Rails v3.2,ruby 1.9.3)。 – xpepermint 2012-01-26 11:56:58