ruby on rails-如何在不使用escape.html包装代码的情况下将slim转换为erb



我正在将多个html.slim文件转换为html.erb。在遵循了大量关于堆栈溢出的精彩建议和技巧后,我基本上完成了,但我对生成的html.erbs代码不满意。我知道它不会是完美的,但我在我的链接周围得到了一个额外的Temple::Utils.escape_html((...)),如:

<%= ::Temple::Utils.escape_html((link_to "Jobs", jobs_path)) %>

我终于在这里找到了Dimitry_N(Stack Overflow)的答案,但即使像他建议的那样通过了--rails标志,我仍然会得到多余的代码。

我遇到了一两个Regex选项,可以在创建文件后删除额外的代码,但我希望能找到一些扩展Dimitry答案的东西,这样它们就不会被插入。

有人经历过这种情况或知道解决方案吗?

escape_html来自Temple,它是Slim引擎配置的一部分:

filter :Escapable

Temple::Filters:Escapable有一个disable_escape选项。我在弄清楚的时候做了这个:

class ERBConverter < Slim::Engine
  replace :StaticMerger, Temple::Filters::CodeMerger
  replace :Generator, Temple::Generators::ERB
  replace(:Escapable, :Escapable) { Temple::Filters::Escapable.new(disable_escape: true) }
end
puts ERBConverter.new.call(File.read("test.html.slim"))
<div class="flex bg-red-500">
<%= link_to "link", link_path, class: "a" %>
</div>

但后来注意到--option标志,您可以将其传递给slimrb:

$ slimrb -e -o disable_escape=true test.html.slim
<div class="flex bg-red-500">
<%= link_to "link", link_path, class: "a" %>
</div>

https://rubydoc.info/gems/slim/frames#available-选项

相关内容

最新更新