使用'end'语句时,Eco模板呈现整数

时间:2012-04-05 20:56:46

标签: ruby-on-rails backbone.js eco jst

我有一个非常简单的Backbone View,我希望有条件地渲染一些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开始,我看不到任何错误。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

或者您可以使用后缀格式。

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

答案 1 :(得分:0)

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

我认为这是由 if 语句包含在已编译的JS中的__obj.push()调用中引起的。例如,在我的脚本中,有一段代码

<%- 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以返回别的东西,但似乎更混乱(因为它是核心功能)。