A.2. 编写 ERB 模板
以下标签是 ERB 模板中最重要且常用的标签:
<% %>
所有 Ruby 代码都包含在 ERB 模板中的 & lt;% %
> 中。代码在渲染模板时执行。它可以包含 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 %>