我有一个chef erb文件,我在其中打印json中的值。JSON有一些可选的属性,比如下面。请注意,JSON的最后一个对象没有“role”属性。
"users": [
{"name" : "ccsup", "desc" :"abc", "role":"CS" },
{"name" : "support", "desc" :"xyz", "role":"Operation" },
{"name" : "admin", "desc" :"admin" }
]
我在erb文件中读取这个json,并生成如下模板
<% users = @users_json -%>
<?xml version="1.0" encoding="UTF-8"?>
<users>
<% users.each do |user| -%>
<user lockCount="0" name="<%= user.name -%>" desc="<%= user.desc -%>" status="A">
<% if user.role -%>
<role><%= user.role -%></role>
<% end -%>
</user>
<% end -%>
</users>
如果我向JSON中的所有对象添加“role”属性,那么代码就可以工作了。但是我会有一些用户“角色”不在那里。对于那些,我想跳过XML标记。
如果我对某些对象没有“角色”属性,我会
Chef::Mixin::Template::TemplateError (Undefined method or attribute `role' on `node') on line #6