erb idiom来处理未定义的变量

时间:2012-10-27 00:06:45

标签: ruby erb

我正在尝试写一些木偶.erb,我想处理这个“环境”变量,如果它是:

  • undefined
  • 包含换行符的字符串
  • 一个数组。

我已经达到了这个目标:

<% Array(environment).join("\n").split(%r{\n}).each do |f| %>
one line: <%= f %>
<% end %>

但尚未解决未定义的案例。我试过这个

<% if (defined?(environment)).nil? %?
<% Array(environment).join("\n").split(%r{\n}).each do |f| %>
one line: <%= f %>
<% end %>
<% end %>

但仍然得到“(erb):11:未定义的局部变量或方法`environment'for main:Object(NameError)”当试图像这样测试时:

ruby -rerb -e "environmentUNDEFINEME= [ 'cronvar=cronval', 'var2=val2' ]; 
puts ERB.new(File.read('templates/job.erb')).result"

对不起,这是如此基本,但是有人必须提出简单的问题。有什么帮助吗?

1 个答案:

答案 0 :(得分:3)

我会这样做:

<% if defined?(environment) %>
  <% Array(environment).each do |f| %>
  one line: <%= f %>
  <% end %>
<% end %>

我不明白你为什么要加入新行然后再拆分它们,所以我从示例中删除了它。