【问题标题】:Print in ERB without <%=?在没有 <%=? 的情况下在 ERB 中打印
【发布时间】:2010-12-16 18:33:13
【问题描述】:

有时在 中打印更方便。在 Rails 中怎么做?

【问题讨论】:

  • @JohnTopley 一个只调用许多其他部分的循环。

标签: ruby-on-rails erb


【解决方案1】:

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

应该是你要找的。​​p>

例如以下语句使用concat

<% concat "Output" %>

相当于:

<%= "Output" %>

【讨论】:

  • 为什么它不能和puts 一起工作,就像echo 在 PHP 中工作一样?
  • STDOUT 通过 Rails 转到其他地方,您可能可以做一些讨厌的事情,以便所有 STDOUT 都转到您的 erb 模板,但是,不要。
  • @Chloe,对此不胜感激。 :)
  • @Chloe - STDOUT 进入日志。我发现这种默认行为在运行乘客(例如)时非常方便,快速打印可以帮助调试。
  • 要打印 HTML,例如使用&lt;% concat "&lt;br&gt;".html_safe %&gt;
【解决方案2】:

在 ERB 中: 表示这里有 Ruby 代码需要解释。 表示输出 ruby​​ 代码,即显示/打印结果。

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

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

Example:

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

# HAML
%strong= item.title

这样更方便吗?

【讨论】:

    【解决方案3】:

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

    正如 Omar 所说,有一个 concat 方法,它是 ActionView 的一部分。这会做你想做的。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 2018-06-30
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多