我想使用语法高亮和红布。
coderay的描述说:
快速和容易的语法高亮显示选定的语言,写在鲁比(人名)自带RedCloth集成和LOC计数器。1
但是我没有找到关于如何做到这一点的文档?
我应该把代码放在哪里做高亮?我想过把它放到module ApplicationHelper
中这是个好主意吗?
选项1:
简单如下:http://railscasts.com/episodes/207-syntax-highlighting?autoplay=true当使用rails3时,将helper更改为:
def coderay(text)
text.gsub!(/<code(?: lang="(.+?)")?>(.+?)</code>/m) do
code = CodeRay.scan($2, $1).div(:css => :class)
"<notextile>#{code}</notextile>"
end
return text.html_safe
end
如果你使用HAML,你需要使用~符号:
~ raw textilize(coderay(...))
选项2:
CodeRay内置了对RedCloth的支持。
- 将所需的gem文件添加到Gemfile中。
gem "RedCloth", :require => 'redcloth' gem 'coderay', :require => ['coderay', 'coderay/for_redcloth']
- 渲染代码字符串,就像你会用RedCloth(~而不是=,因为我使用HAML)。
~ raw textilize("Some code here @that should@ be formated.") ~ raw textilize("Some code here @[ruby]that should@ be formated.")
- 你也可以渲染一个文件
# File at /my/file/path/filename.doc h1. My title bc[ruby].. # Nekaj za napisat def self.myfun puts "asdas" end # Inside your view file ~ raw textilize(File.read("/my/file/path/filename.doc"))
我更喜欢第二个选项。
您可以在http://en.wikipedia.org/wiki/Textile_(markup_language找到更多关于使用Textile标记语言进行样式化的信息