将现有的html.erb转换为Haml

52

我有一个rails项目,视图只包含HTML.ERB文件,我的客户想要将ERB转换为HAML。我有太多的视图文件,逐个文件转换需要花费大量时间。是否有简单的方法可以将HTML转换为haml?我在我的项目中安装了haml插件。

9个回答

103

3
根据最新的html2haml源代码,html2haml“正在从haml gem中分离出来”。 - David J.
3
现在有一个单独的宝石库 html2haml。看起来当前构建也没有通过。 - Eric H.
我不太确定上面两条评论的含义应该是什么。我决定尝试一下命令行html2haml,它似乎工作得很好。 - Jason Swett

28

如果我有HTML图像标签<img src="abc.gif"/>,html2haml将其转换为%img{:src => "abc.gif"}。是否有一种方法将其转换为=image_tag "abc.gif"以使用Rails助手? - Mahmoud Khaled
13
这不是一个“糟糕”的答案,但不应该被接受为最佳答案。下面的命令行工具更好。 - David J.
2
请阅读帖子,他说他不想转换每个单独的文件。 - JackHasaKeyboard

17

对于小型转换来说很用户友好,但是对于完整应用程序来说非常麻烦。 - iconoclast

14
haml-rails git 页面 上,它提供了一个 cli 命令来将你项目中的所有 erb 文件转换为 haml 格式。
在你的 Gemfile 中添加 gem "haml-rails" 运行: rake haml:erb2haml

非常容易,而且在我看来比引入另一个 gem 好得多。 - labyrinth

14

David Leung 在 Github 上提供了 这个宝石,可以安装两个 rake 任务。

使用 erb2haml,您可以通过 rake haml:convert_erbsrake haml:replace_erbs 轻松将整个项目从 erb 转换为 haml。


10

非常简单

在您的 Gemfile 中添加

gem "erb2haml", :group => :development

接着运行bundle install

*.erb转换为*.haml并保留原始文件的方法如下:

rake haml:convert_erbs

*.erb转换成*.haml并替换原始文件的方法如下:

rake haml:replace_erbs

它将搜索项目中的所有 erb 文件并转换为 haml

缩略语:使用在线转换器

http://www.htmltohaml.com


4

编辑:html2haml确实像宣传的那样有效,但是您必须使用从haml github仓库当前主分支获取的版本。

包含在rubygems中可用的haml gem中的html2haml版本没有用。如果您现在执行gem install haml,将会得到这个版本。使用与gem提供的版本会导致无效的haml,因为它不能正确处理ruby。


1
只是想补充一下,截至目前(2011/7/21),haml gem的html2haml功能可用。但是,在安装haml之上,您必须先执行“gem install hpricot”和“gem install ruby_parser”。如果您尝试进行erb->haml转换,它会提示您安装这些gems。 - Eric Hu

1
"我很晚才来到这里,但在谷歌搜索类似解决方案时,这篇文章仍然排名很高。安装“html2haml”宝石(gem),进入您的app/views目录并尝试以下操作:"
find ./ -name '*.erb' -exec html2haml -e {} {}.haml \;
find ./ -name "*.erb.haml" -exec sh -c 'mv "$1" "${1%.erb.haml}.haml"' _ {} \;
find ./ -name '*.erb' -exec rm {} \;

这种解决方案的缺陷在于它不能保留旧的 .erb 文件到新的 .haml 文件的修订历史记录。但在那些视图文件的修订历史记录不是很重要的情况下,这个解决方案对我来说效果还不错。
此外,在删除旧的 .erb 文件之前,请确保仔细检查 html2haml 行中是否有任何错误。

1

html2haml现在已经包含在html2haml gem中,所以你可以使用:

$ gem install html2haml
$ html2haml path/to/yourfile.html path/to/yourfile.haml

需要的是应用程序范围内的答案,而不是单个文件。没有人想要逐个输入文件。这只比手动完成多一步。应用程序范围的任务将处理单个文件。 - ahnbizcad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接