在没有<%=?的ERB中打印

时间:2009-11-15 11:08:38

标签: ruby-on-rails erb

有时在< %%>中打印更方便。如何在Rails中完成?

3 个答案:

答案 0 :(得分:43)

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-concat

应该是你想要的。

E.g。以下语句使用concat

<% concat "Output" %>

相当于:

<%= "Output" %>

答案 1 :(得分:7)

在再培训局: &lt; %%&gt;表示这里有Ruby代码被解释。 &lt;%=%&gt;输出红宝石代码,即显示/打印结果。

因此,如果要在标准ERB文件中输出,似乎需要使用extra =符号。

否则,您可以查看ERB的替代方法,这需要更少的语法,...也许尝试类似HAML的东西。 http://haml-lang.com/tutorial.html

Example:

# ERB
<strong><%= item.title %></strong>

# HAML
%strong= item.title

这样更方便吗?

答案 2 :(得分:4)

erb有两种方法来评估内联ruby表达式。评估表达式的<%和评估和打印的<%=。在绑定上下文中没有要打印的全局对象。

如Omar所述,有一个 concat 方法,它是ActionView的一部分。这将做你想要的。

与脚本语言转义不同,erb没有默认输出。因为erb只是一个函数,并且给定一个模板并且绑定将返回一个变量,它会以递归方式返回文本和函数的值。

关于视图中应该允许多少逻辑存在激烈的争论,但尽可能少是大多数人的目标。如果您在视图中添加的代码多于文本,则可能需要考虑重构代码。