我正在构建一个 html 表,其中应包含名称、等级 1、等级 2 和等级 3。评级 1-3 来自与名称不同的型号。
resources :names do
resource :rat1,:rat2,:rat3
end
在我的 html 表中,我想在每个表中包含评级,但我想自动跳过或忽略 nil 的表。这是因为 :names 可能只有 :rat1 而不是 :rat2 或 :rat3。我的观点应该是这样的。
<table>
<thead>Name</thead>
<thead>Rating 1</thead>
<thead>Rating 2</thead>
<thead>Rating 3</thead>
<% @names.each do |name| %>
<tr>
<td><%= name.nametext %></td>
<td><%= name.rat1.rating %></td>
<td><%= name.rat2.rating %></td>
<td><%= name.rat3.rating %></td>
</tr>
<% end %>
</table>
除非 name.rat1 为 nil,否则它将 a.) 将值替换为 N/A 或 b.) 它将将此字段留空并继续下一个。
最干净的方法是什么?
::更新::
所以我的问题是 name.rat1 是 nil 并且 name.rat1.rating 是 nil 类的未定义方法,所以这两个选项都会抛出相同的 nil 类错误的未定义方法,而不管 || 或辅助方法。至少这就是我目前的测试所显示的。还有其他选择吗?或不同的解决方法?我想避免为每个 rat1-3 放置一个这样的验证循环
<% unless name.rat1.nil? %>
<%= name.rat1.rating %>
<% end %>
必须有一个更简单的方法。