将ERB模板转换为SLIM

11

我的许多视图都是SLIM模板,我希望向我的应用程序添加一个vote_form部分视图。我该如何将这个部分视图从ERB转换为SLIM?

<strong class="result">Votes: <%= voteable.votes_for - voteable.votes_against %></strong>
<%= form_tag user_votes_path(current_user) do |f| %>
  <%= radio_button_tag :thumb_direction, :up %>
  <%= radio_button_tag :thumb_direction, :down %>
  <%= hidden_field_tag :voteable, @voteable %>
  <%= submit_tag :vote %>
<% end %>

谢谢 :)


2
请查看 http://html2slim.herokuapp.com/ - Mark Locklear
这是一个在线工具,可以帮助您快速完成工作 http://erb2slim.herokuapp.com/ - si le
7个回答

29

如何将.erb文件转换为.slim文件:

更新(2015年8月18日)

您可以简单地使用html2slim gem。

注:.erb和.slim都是Ruby on Rails中的视图文件格式。
gem install html2slim

这个包含一个名为erb2slim的工具,可以递归地将erb文件转换为slim文件。选项-d用于在转换完成后删除erb文件。

最初的回答
erb2slim -d <dir of your views>

最初的回答

你必须使用 HAML

在你的环境或gemset中安装 HAML 的依赖项。

在devise wiki上查看

gem install html2haml # This was moved out of haml gem
gem install ruby_parser

切换到HAML模板

find . -name '*erb' | \
xargs ruby -e 'ARGV.each { |i| puts "html2haml -r #{i} #{i.sub(/erb$/,"haml")}"}' | \
bash

安装SLIM工具所需的依赖
gem install haml2slim # https://github.com/fredwu/haml2slim

将模板切换为SLIM

find . -name '*haml' | \
xargs ruby -e 'ARGV.each { |i| puts "haml2slim #{i} #{i.sub(/haml$/,"slim")}"}' | \
bash

清洁的ERB和HAML模板

find . -name '*erb' -exec rm -f {} \;
find . -name '*haml' -exec rm -f {} \;

去除依赖关系

gem uninstall html2haml
gem uninstall ruby_parser
gem uninstall haml2slim

That all, have fun


1
我在某个项目中不得不将所有的erb模板转换为slim,哇!您的小脚本非常有帮助!!:-) 谢谢您先生! - Szymon Przybył
很棒。如果你在使用 Mac,请将以下内容转换为单行,然后使用 sh:find . -name '*haml' | xargs ruby -e 'ARGV.each { |i| puts "haml2slim #{i} #{i.sub(/haml$/,"slim")}"}' | sh - Gaurav Shah
你必须掌握 HAML! 为什么? - ahnbizcad
2
注意Rails 4和2014年9月起:在转换时,您不需要haml gem本身,也不需要hpricot gem。只需拥有ruby_parserhtml2hamlhaml2slim即可转换现有文件。要使未来的视图生成为slim,请使用slim-rails gem,每当运行生成器时,您的视图将会是slim格式。此外,您可以使用gemfiles并运行bundle,而不是gem uninstall yourgem - ahnbizcad
我根据您的原始答案进行了一些修改。请查看:https://dev59.com/92kv5IYBdhLWcg3wxzyA#26073207。感谢原始脚本。 - Besi
显示剩余2条评论

6

适合短小的内容。但是如果你想在整个项目中处理所有文件,那么需要一个批量转换的工具,不仅可以转换代码,还可以重命名文件,而不必手动完成。 - ahnbizcad
并且让未来生成的模板使用slim格式。 - ahnbizcad

6
这是基于@Joel的卓越答案。由于一些宝石似乎已经移动并且我进行了一些其他改进,所以我不得不稍微修改一下:
  • 这是一个完整的脚本,只需复制粘贴即可。
  • 不要删除末尾的宝石,因为我可能需要在下一个项目中使用它(例如当我创建devise的视图时)。
  • gem install ... 部分可以省略以加快处理速度。

转换文件

更新:不再需要通过haml进行转换。这是更新后的脚本:

#### gem install html2slim # this will install `erb2slim` command line tool.
find . -name '*erb' | \
xargs ruby -e 'ARGV.each { |i| puts "erb2slim #{i} #{i.sub(/erb$/,"slim")}"}' | \
bash

# Clean ERB templates
find . -name '*erb' -exec rm -f {} \;
git add app/views/*
git commit -m "Replace erb with slim"

结果

在我的例子中(运行rails g devise:views后),所有的.erb文件都被替换成了.slim文件,然后被删除:

截图

单个文件的替代方法

有时我只想转换一个片段。就像之前提到的那样。在这种情况下,我使用

https://html2slim.herokuapp.com

html2slim-in-action

旧方法

所以我们来看看:

# You must pass through HAML !
# Install HAML dependencies on your environment or your gemset
gem install haml html2haml hpricot ruby_parser haml2slim

# Switch to HAML templating
find . -name '*erb' | \
xargs ruby -e 'ARGV.each { |i| puts "html2haml -r #{i} #{i.sub(/erb$/,"haml")}"}' | \
bash

#Switch to SLIM templating
find . -name '*haml' | \
xargs ruby -e 'ARGV.each { |i| puts "haml2slim #{i} #{i.sub(/haml$/,"slim")}"}' | \
bash

# Clean ERB and HAML templates
find . -name '*erb' -exec rm -f {} \;
find . -name '*haml' -exec rm -f {} \;

5
我喜欢事实上的答案,但认为人们会很想知道一个新的宝石,它可以更快地做到这一点,并且更不费力。但目前它还相当有 bug。 :(
看看 html2slim 吧。比如我想把所有视图从 .erb 改成 .slim,那么我只需运行以下命令(从您的 rails 根目录开始):
gem install html2slim
erb2slim app/views --delete

如果你运行erb2slim -h,你会发现-d/--delete是一个选项,可以在转换后删除erbs文件,--trace则会显示任何错误的完整回溯信息。作者提醒这仍然是实验性功能。

1
只需将文件重命名为以.html.slim结尾,而不是.html.erb,并用以下内容替换即可:
strong.result= "Votes: #{voteable.votes_for - voteable.votes_against}"

= form_tag user_votes_path(current_user) do
  = radio_button_tag :thumb_direction, :up
  = radio_button_tag :thumb_direction, :down
  = hidden_field_tag :voteable, @voteable
  = submit_tag :vote

0

正如之前的回答,我使用了两个宝石(gems):

 gem install html2haml haml2slim

然后:

 find app/views -name \*.erb -print | sed 'p;s/.erb$/.haml/' | xargs -n2 sh -c 'html2haml "$0" "$1" && rm "$0"'

*.erb替换为转换后的*.haml版本。

现在将*.haml转换为*.slim并删除*.haml文件:

 haml2slim -d app/views

最后,可选地:

 gem uninstall html2haml haml2slim

0

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