【问题标题】:Convert ERB template to SLIM将 ERB 模板转换为 SLIM
【发布时间】:2012-04-27 08:46:30
【问题描述】:

我的许多视图都是 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 %>

谢谢:)

【问题讨论】:

标签: ruby-on-rails slim-lang


【解决方案1】:

如何将您的 .erb 转换为 .slim :

更新 (18-08-2015)

你可以简单地使用html2slimgem

gem install html2slim

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

erb2slim -d <dir of your views>

View on devise wiki

原答案

你必须通过HAML

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

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

清理 ERBHAML 模板

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

移除依赖

gem uninstall html2haml
gem uninstall ruby_parser
gem uninstall haml2slim

这些,玩得开心

【讨论】:

  • 我不得不在某个项目中将所有 erb 模板转换为 slim,哇!你的小脚本太有用了!! :-) 谢谢先生!
  • 太棒了。如果您使用的是 mac find . -name '*haml' | xargs ruby -e 'ARGV.each { |i| puts "haml2slim #{i} #{i.sub(/haml$/,"slim")}"}' | sh ,只需一个提示 .. 将其设为单行并使用 sh
  • "你必须通过 HAML !" 为什么?
  • rails 4 和截至 2014 年 9 月的注意事项:您不需要 haml gem 本身,也不需要 hpricot gem 转换时。有ruby_parserhtml2hamlhaml2slim 来转换现有文件就足够了。要在 slim 中生成未来的视图,只需使用 slim-rails gem,每当您运行生成器时,您的视图都会在 slim 中。此外,您可以使用 gemfiles 并运行 bundle,而不是 gem uninstall yourgem
  • 我根据您的原始答案做了一些修改。看看:stackoverflow.com/a/26073207/784318。感谢原始脚本
【解决方案2】:

在这里,只需粘贴 erb 代码并点击“开始”:
http://html2slim.herokuapp.com/

【讨论】:

  • 适合短篇。但是如果你想对整个项目中的所有文件进行处理,那么需要一个批量转换工具,不仅可以转换代码,还可以重命名文件,而无需手动操作。
  • 并且让未来生成的模板更精简。
【解决方案3】:

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

  • 这是一个脚本,所以只需复制粘贴
  • 最后不要删除 gem,因为我可能会在下一个项目中需要它(例如,当我创建设计的视图时)
  • 然后可以发出 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

旧方法

所以我们开始:

# 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】:

    我喜欢事实上的答案,但我认为人们很想知道一种新的宝石,它可以更快、更轻松地完成此任务。但目前它相当有问题。 :(

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

    gem install html2slim
    erb2slim app/views --delete
    

    如果您运行erb2slim -h,您可以看到-d/--delete 是之后删除erb 的选项,--trace 显示任何错误的完整回溯。来自作者的说明,它仍处于实验阶段。

    【讨论】:

      【解决方案5】:

      只需将文件重命名为以.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
      

      【讨论】:

        【解决方案6】:

        这个在线工具完全符合您的要求http://erb2slim.herokuapp.com 就是将 erb sn-ps 转换为 slim。

        【讨论】:

          【解决方案7】:

          与之前的答案一样,我使用了两个宝石:

           gem install html2haml haml2slim
          

          然后:

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

          用转换后的*.haml 版本替换*.erb

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

           haml2slim -d app/views
          

          毕竟是可选的:

           gem uninstall html2haml haml2slim
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-09-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-08-20
            相关资源
            最近更新 更多