搜索

A.2. 编写 ERB 模板

download PDF

以下标签是 ERB 模板中最重要的、常用的标签:

<% %>

所有 Ruby 代码都用 ERB 模板中的 & lt;% %& gt; 括起来。当模板呈现时,代码会被执行。它可以包含 Ruby 控制流结构,以及特定于 Satellite 的宏和变量。例如:

<% if @host.operatingsystem.family == "Redhat" && @host.operatingsystem.major.to_i > 6 -%>
systemctl <%= input("action") %> <%= input("service") %>
<% else -%>
service <%= input("service") %> <%= input("action") %>
<% end -%>

请注意,此模板静默与服务执行操作,并在输出中返回任何内容。

<%= %>

这提供了与 <% %&gt; 相同的功能,但在执行模板时,代码输出会插入到模板中。这对变量替换很有用,例如:

输入示例:

echo <%= @host.name %>

渲染示例:

host.example.com

输入示例:

<% server_name = @host.fqdn %>
<%= server_name %>

渲染示例:

host.example.com

请注意,如果您输入了不正确的变量,则不会返回输出。但是,如果您试图在不正确的变量上调用方法,则会返回以下出错信息:

输入示例:

<%= @example_incorrect_variable.fqdn -%>

渲染示例:

undefined method `fqdn' for nil:NilClass

<% -%>, <%= -%>

默认情况下,如果在行末尾关闭,则会在 Ruby 块后插入换行符:

输入示例:

<%= "line1" %>
<%= "line2" %>

渲染示例:

line1
line2

要更改默认行为,请使用 -% > 修改保护标记:

输入示例:

<%= "line1" -%>
<%= "line2" %>

渲染示例:

line1line2

这用于减少 Ruby 语法允许呈现的模板的行数。ERB 标签中的空格将被忽略。

有关如何在报告模板中使用该方法删除 FQDN 和 IP 地址之间的不必要的新行的示例:

输入示例:

<%= @host.fqdn -%>
<%= @host.ip -%>

渲染示例:

host.example.com10.10.181.216

<%# %>

包含模板渲染过程中忽略的注释:

输入示例:

<%# A comment %>

这不会生成任何输出。

在 ERB 模板中缩进

由于 ERB 标签的不同长度,处理 ERB 语法似乎可能看似意义。ERB 语法忽略空格。处理缩进的一种方法是在每个新行的开头声明 ERB 标签,然后使用 ERB 标签中的空格来概述语法中的关系,例如:

<%- load_hosts.each do |host| -%>
<%-   if host.build? %>
<%=     host.name %> build is in progress
<%-   end %>
<%- end %>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.