使用“结束”语句时,生态模板呈现整数(Eco template renders integer wh

2019-09-16 08:37发布

我有一个非常简单的骨干视图,我想有渲染HTML的一些块有条件。 我看到一个行为,其中有条件地渲染HTML下面有渲染以及一个整数。 从我可以告诉,似乎当我使用的发生end声明终止条件块。

下面是一些代码,展示着错误对我来说:

<% if true: %>Hello World!<% end %>

我希望它可以呈现Hello World! 入含有元素。 然而,它实际上呈现Hello World!2

如果我添加若干块在同一模板:

<% if true: %>Foo, <% end %>
<% if true: %>Bar, <% end %>
<% if true: %>Baz<% end %>

我希望它可以呈现Foo, Bar, Baz将包含的元素。 然而,它实际上是渲染Foo, 2 Bar, 5 Baz8 。 运行稍大设置它们之后,似乎正在打印的整数由每次3上升。 从阅读过宝石的README我什么都看不到我做错了。

任何帮助将非常感激!

Answer 1:

另外,您可以使用后缀格式。

<%= "Hello World!" if true %>


Answer 2:

我也有同样的问题。 你已经解决了吗?

我认为它是由如果被包裹在报表造成__obj.push()在编译的JS调用。 举例来说,在我的剧本,有一段代码

<%- if !@blok: %>
  <%- to_html(@create_link('c', @session['course'])) %>
<%- end %>

这被编译到

[1] __out.push(!this.blok ?
[2]  (__out.push('\n '),
[3]   __out.push(to_html(this.create_link('c', this.session['course']))),
[4]   __out.push('\n ')
[5]  ) : void 0)

如果我理解正确的话,这意味着它会先推\n的功能,另外的结果\n到输出。 但最后push (第4行)将返回的数组中的元素,这将是反过来的数目推到阵列本身由外push (线1)。

我试图改变Array.prototype.push到别的返回的东西,但似乎弄乱的东西更(因为它是一个核心功能)。



文章来源: Eco template renders integer when using 'end' statement