我有一个非常简单的骨干视图,我想有渲染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我什么都看不到我做错了。
任何帮助将非常感激!
另外,您可以使用后缀格式。
<%= "Hello World!" if true %>
我也有同样的问题。 你已经解决了吗?
我认为它是由如果被包裹在报表造成__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
到别的返回的东西,但似乎弄乱的东西更(因为它是一个核心功能)。