我在视图中有以下代码:
<% @portfolio.currencies.each do |cr| %>
<tr>
<td class="full_name"><%= cr.full_name %></td>
<td class="weight"><%= number_to_percentage(@portfolio.weights[cr.full_name] * 100) %></td>
</tr>
<% end %>
@portfolio.weights[cr.full_name]
总是0.2
第一列正确显示。 但是,第二列不是。
显示的页面对第二列的所有条目都有此值:
0.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.2
为什么会发生这种情况?如何解决这个问题?
答案 0 :(得分:2)
好吧,幸运的是我遇到了你的问题。
在number_to_percentage(@portfolio.weights[cr.full_name] * 100)
方法调用中,@portfolio.weights[cr.full_name]
返回字符串0.2
而非浮动。
执行'hello' * 3
时,在ruby中,它会返回hellohellohello
。
因此,在您的情况下,它会重复0.2
,100
次。
修复方法是,使用to_f
将string
转换为float
:
number_to_percentage(@portfolio.weights[cr.full_name].to_f * 100)