在你的
render_body
方法调用
coderay()
方法,然后调用
markdown()
方法。使用
markdown
方法首先生成一些额外的html
CodeRay
我的测试假设你在降价源中有这样的原始数据
<code lang="ruby">
def function(param1, param2)
puts param1
param2.each do |a|
a.hello :world
end
end
</code>
这是我用来测试它的全部课程。注意我没用
:css => :class
class Post < ActiveRecord::Base
before_save :render_body
def render_body
self.rendered_body = markdown(coderay(self.body))
end
def markdown(text)
RDiscount.new(text).to_html
end
def coderay(text)
text.gsub(/\<code( lang="(.+?)")?\>(.+?)\<\/code\>/m) do
CodeRay.scan($3, $2).div
end
end
end
你的最终输出假设
:css=>:类
<div class="CodeRay">
<div class="code"><pre>
<span class="r">def</span> <span class="fu">function</span>(param1, param2)
puts param1
param2.each <span class="r">do</span> |a|
a.hello <span class="sy">:world</span>
<span class="r">end</span>
<span class="r">end</span>
</pre></div>
</div>