在Ruby Slim文件中设置Javascript类型

Wil*_*ill 5 javascript json ruby-on-rails slim-lang

我有一个带有邮件的Ruby on Rails应用程序,它们使用slim来查看视图.

我想用Google标记格式标记一封电子邮件.它需要一个类型为JSON-LD的脚本标记,如下所示: <script type="application/ld+json">

我的电子邮件视图写得很苗条.我知道我可以创建一个脚本标签,该脚本标签没有通过前缀来设置苗条javascript:的类型,但不会以这种方式设置类型.

如何在苗条模板中将类型设置为JSON-LD?

我想把Javascript放在脚本块中而不是从src加载它,不像提问这个问题的人: 使用Rails和Slim自定义Javascript类型

谢谢!

Jer*_*man 8

您可以使用常规脚本标记并转义javascript:

script type="application/ld+json"
  | alert('hi’)
Run Code Online (Sandbox Code Playgroud)

或者您可以创建一个快捷方式来完成此任务:

来自https://github.com/slim-template/slim:

您还可以为快捷方式设置其他固定值属性.

Slim::Engine.set_options shortcut: {'^' => {tag: 'script', attr: 'data-binding',
  additional_attrs: { type: "text/javascript" }}}
Run Code Online (Sandbox Code Playgroud)

然后

^products
  == @products.to_json
Run Code Online (Sandbox Code Playgroud)

它呈现给

<script data-binding="products" type="text/javascript">
    [{"name": "product1", "price": "$100"},
     {"name": "prodcut2", "price": "$200"}]
</script>
Run Code Online (Sandbox Code Playgroud)