Convert ERB template to SLIM

匿名 (未验证) 提交于 2019-12-03 02:47:02

问题:

Many of my views are SLIM templates and I wish to add a vote_form partial to my app. How would I convert this partial view from ERB to 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 %> 

Thanks :)

回答1:

How convert your .erb to .slim :

Update! 18-08-2015

You can simply use html2slim gem

gem install html2slim 

This package include a tool called erb2slim which can convert erb file to slim recursively. Option -d for delete the erb file after the convert finished.

erb2slim -d <dir of your views> 

View on devise wiki

End of Update!

You must pass through HAML !

Install HAML dependencies on your environment or your gemset

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

Switch to HAML templating

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

Install SLIM tool dependency

gem install haml2slim # https://github.com/fredwu/haml2slim 

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 {} \; 

Remove dependencies

gem uninstall html2haml gem uninstall ruby_parser gem uninstall haml2slim 

That all, have fun



回答2:

Here you are, just paste the erb code and hit 'go':
http://html2slim.herokuapp.com/



回答3:

This is based on @Joel's brilliant answer. I had to modify it a bit since some gems seem to have moved and I made some other improvements:

  • It is all one script so just copy paste
  • Don't delete the gems at the end, since I will likely need this for the next project (e.g. when I create devise's views)
  • The gem install ... portion can then be emitted to make for faster processing.

Converting the files

Update: The conversion through haml is no longer required. This is the updated script:

#### 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" 

The result

In my example (after running rails g devise:views)all the .erb files were replaced with .slim files and then deleted:

The alternative for single files

Sometimes I just wan to convert a snipped. Like it was mentioned before. In such cases I use

https://html2slim.herokuapp.com

The old approach

So here we go:

# 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 {} \; 


回答4:

I like the de facto answer but thought people would love to know about a new gem which does this much faster and with less hassle. It is at the moment however fairly buggy. :(

Check out html2slim. Say I want to change all my views from .erb to .slim, then I run (from scratch, and from your rails root directory) the following:

gem install html2slim erb2slim app/views --delete 

If you run erb2slim -h you can see that -d/--delete is an option to delete the erbs afterwards and --trace shows a full traceback on any errors. A note from the author that it is still experimental.



回答5:

Simply rename the file to end with .html.slim instead of .html.erb, and replace the content with something like the following:

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 


回答6:

This is online tool does exactly what you want http://erb2slim.herokuapp.com is convert erb snippets to slim.



回答7:

As in previous answers I use two gems:

 gem install html2haml haml2slim 

Then:

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

to replace *.erb with converted *.haml versions.

Now to convert *.haml to *.slim and remove *.haml files:

 haml2slim -d app/views 

After all optionally:

 gem uninstall html2haml haml2slim 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!