rails js 响应中的 slim 模板

rails slim template in js response

我正在使用 slim 模板,需要编写一个 js 格式的响应, 当我尝试

javascript:
  alert('x');

代码没有 运行,我猜是因为它被包裹在 <script> 标签中。

我发现自己在写这个

| alert('x');

它可以工作,但是,如果我需要添加另一个命令,我需要编写

| alert...
= "\n"
| anotherCommand

有没有更好的方法来用slim模板写这种东西? 我的实际代码看起来很糟糕(在这里)

| UIkit.notification("booked");
= "\n"
| $("#total").html("
= escape_javascript(render "total")
|");

= "\n"
| $("#total_#{@id}").html("
= escape_javascript(render "total", order:@order)
|");

只是3行jshtml替换

你可以像这样把所有的命令都写在一个 | 下:

|
  UIkit.notification("booked");
  $("#total").html("#{{escape_javascript(render 'total')}}");
  $("#total_#{@id}").html("#{{escape_javascript(render 'total', order: @order)}}");

Reference for |.

Interpolation也可以,不用显式加上\n,因为|下的文字是原样复制的,换行符也会复制.但是即使没有它们,您的 javascript 也是有效的,因为命令是用分号分隔的。

注意这里插值需要双括号,否则插值输出会被html转义。