Ruby erb 模板“或”运算符

spu*_*der 1 erb puppet

我有一个使用 erb 模板的木偶清单。

根据文档,这是正确的语法,并且可以完美运行。

<% if foo != bar %>
  derp
<% else %> 
  herp
<% end %> 
Run Code Online (Sandbox Code Playgroud)

如何将 if 语句与“或”运算符结合使用?

以下是我尝试过的以下语法,但它们返回错误:

<% if foo != bar  or  if slurp != burp %>
  derp
<% else %> 
  herp
<% end %> 

Error: Could not run: /etc/puppet/modules/gitlab/templates/gitlab.yml.6-7-stable.erb:275: syntax error, unexpected $end, expecting keyword_end
; _erbout.force_encoding(__ENCODING__)
Run Code Online (Sandbox Code Playgroud)

我尝试将 <% 更改为 <%%,因为puppet 文档中提到了这一点

<%% if foo != bar  or  if slurp != burp %%>
  derp
<% else %> 
  herp
<% end %> 

Error: Could not run: /etc/puppet/modules/gitlab/templates/gitlab.yml.6-7-stable.erb:241: syntax error, unexpected keyword_else, expecting $end
;  else ; _erbout.concat "\n    derp   "
   ^
Run Code Online (Sandbox Code Playgroud)

我试过拆分 if-s

<% if foo != bar  %> or  <% if slurp != burp %>
  derp
<% else %> 
  herp
<% end %> 
Error: Could not run: /etc/puppet/modules/gitlab/templates/gitlab.yml.6-7-stable.erb:275: syntax error, unexpected $end, expecting keyword_end
; _erbout.force_encoding(__ENCODING__)
                                  ^
Run Code Online (Sandbox Code Playgroud)

Aru*_*hit 5

有一个额外的if. 正确的语法是:

<% if foo != bar  or slurp != burp %> 
  derp
<% else %> 
  herp
<% end %> 
Run Code Online (Sandbox Code Playgroud)

但是你的那些没有用,因为你的if-else构造是错误的。阅读if-else构造文档。