将ERB模板转换为SLIM

Khm*_*smi 11 ruby-on-rails slim-lang

我的许多观点都是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 %>
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

Joe*_*MAR 25

如何将.erb转换为.slim:

更新!18-08-2015

你可以简单地使用html2slim gem

gem install html2slim
Run Code Online (Sandbox Code Playgroud)

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

erb2slim -d <dir of your views>
Run Code Online (Sandbox Code Playgroud)

在设计维基上查看

更新结束!

你必须通过HAML!

在您的环境或gemset上安装HAML依赖项

gem install html2haml # This was moved out of haml gem
gem install ruby_parser
Run Code Online (Sandbox Code Playgroud)

切换到HAML模板

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

安装SLIM工具依赖项

gem install haml2slim # https://github.com/fredwu/haml2slim
Run Code Online (Sandbox Code Playgroud)

切换到SLIM模板

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

清理ERBHAML模板

find . -name '*erb' -exec rm -f {} \;
find . -name '*haml' -exec rm -f {} \;
Run Code Online (Sandbox Code Playgroud)

删除依赖项

gem uninstall html2haml
gem uninstall ruby_parser
gem uninstall haml2slim
Run Code Online (Sandbox Code Playgroud)

这一切,玩得开心

  • 对于rails 4以及截至2014年9月的注释:你不需要`haml` gem本身,转换时你不需要`hpricot` gem.只需要`ruby_parser`,`html2haml`和`haml2slim`来转换现有文件就足够了.为了让未来的视图在苗条中生成,只需使用`slim-rails` gem,只要你运行生成器,你的视图就会变得很小.此外,您可以使用gemfiles并运行bundle,而不是`gem uninstall yourgem` (2认同)

ted*_*ted 6

在这里,只需粘贴erb代码并点击"go":http:
//html2slim.herokuapp.com/


Bes*_*esi 6

这是基于@ Joel的精彩回答.我不得不修改它,因为一些宝石似乎已经移动,我做了一些其他的改进:

  • 这是一个脚本所以只需复制粘贴
  • 不要删除最后的宝石,因为我可能需要这个用于下一个项目(例如,当我创建设计视图时)
  • 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"
Run Code Online (Sandbox Code Playgroud)

结果

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

截图

单个文件的替代方案

有时我只想转换一个剪断的.就像之前提到的那样.在这种情况下我使用

https://html2slim.herokuapp.com

html2slim在行动

旧方法

所以我们走了:

# 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 {} \;
Run Code Online (Sandbox Code Playgroud)


Jon*_*han 5

我喜欢事实上的答案,但是我想人们会喜欢知道一种新的宝石,这种宝石可以更快地完成这项工作并且不那么麻烦.然而现在它仍然是相当错误的.:(

看看html2slim.假设我想将所有视图更改.erb.slim,然后我(从头开始,从您的rails根目录)运行以下内容:

gem install html2slim
erb2slim app/views --delete
Run Code Online (Sandbox Code Playgroud)

如果你运行,erb2slim -h你可以看到-d/ --delete是一个删除erbs之后的选项,并--trace显示任何错误的完整回溯.作者的一个说明,它仍然是实验性的.


Dig*_*lex 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
Run Code Online (Sandbox Code Playgroud)