2014-07-12 152 views
-1

我的.erb文件不会将<%= %>内的代码作为ruby代码执行。例如:: <%= puts "almost"%>,渲染时只是<%= puts "almost"%>。 erb引擎甚至不处理任何东西。这意味着<%=%>内没有任何东西正在处理。任何帮助将不胜感激。Ruby on rails .erb文件

+0

尝试'<%= “差不多” %>'如果你想'almost'作为输出 – Pavan

+0

你的意思是你呈现的HTML将字面上包含' <%= puts“几乎”%>'好像erb引擎什么也没做? –

+1

您需要提供更多信息;如果它精确地呈现“<%= puts”几乎是“%>',那么就会出现一些错误。请注意,写入'stdout',虽然当然是一件有效的事情,但在视图模板中几乎不需要。 –

回答

-1

任何内部<%%>将被评估为红宝石代码,以及任何内部<%=%>将outputed为html。所以当你做<%=把“几乎”%>它直接输出为HTML。你可以解决这个使用

<% puts "almost" %> 

<%= "almost" %>. 
+3

否; '<%= puts“几乎是”%>'将呈现'puts'的返回值。所有'<%= %>'都会输出评估其中的Ruby代码的结果。在你的例子中,'“almost”'是一个字符串,所以这就是呈现给客户端的东西。评估内容:您可以如何使用它来呈现变量的输出,辅助方法等。 –

0

您正在混淆erb表达式和Ruby代码。使用<% %>可以执行任意的Ruby代码。

<% puts "almost" %> 
+2

'<%= %>'中的代码仍将被评估;这里的问题或者是(a)它不是由ERb在* all *处理的,或者(b)他们想要在*客户端*上几乎呈现的,或者其他的。这个演讲很难说。 –