我正在使用Ruby on Rails并正在迭代一个对象。
我想显示一个百分比,将两列的值除以 100。
我不知道我是否可以在视图中编写它,或者我是否需要在模型或控制器中编写方法。我首先选择在视图中编写它,并且仅在某些时候收到错误"nil:NilClass 的未定义方法"/"。
我认为这是当其中一列没有值时抛出的错误。当我在模型或控制器中编写方法时,没有错误,但我尝试显示的值为空。
以下是我的计算在视图中的外观:
显示.html.erb
<%= number_to_percentage(object.column1 / object.column2.round(2) * 100, precision: 0) %>
/
是一种与 Ruby 中任何其他方法一样的方法,a / b
只是一种不同的a./(b)
说法,因此错误告诉您object.column1
nil
。
你必须决定你想要object.column1.nil
的意思:
-
你特别展示这些东西吗?如果是这样,那么:
<% if object.column1.nil? %> nil or whatever else you want to say <% else %> <%= object.column1 / object.column2.round(2) * 100, precision: 0) %> <% end %>
-
你想把
nil
当成零吗?如果是这样,那么:<%= object.column1.to_i / object.column2.round(2) * 100, precision: 0) %>
如果
column1
是浮点值,则您希望使用to_f
而不是to_i
。如果n
是整数,那么n.to_i == n
但nil.to_i == 0
to_i
是隐藏常见的"将nil
视为0
"逻辑的便捷方法;同样适用于floating_point_value.to_f
和nil.to_f
.
如果object.column2
也可以nil
那么您必须就如何处理object.column2.nil?
做出类似的决定。