2015-05-25 81 views
-1

我有我的看法如下代碼:導軌 - 視圖顯示奇異數

<% @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

我猜它的循環。請添加更多相關的代碼。就像你在設置重量值的地方一樣。 –

+0

你可以嘗試像 這樣做:<%=「%.2f」%weight%> –

+0

@ arthur.karganyan:這將如何改變一個事實,即輸出的一個值應該輸出幾十億次? 「weight」是一個包含該值的許多副本的字符串,或者是一個循環輸出的一串''。 –

回答

2

好的,幸運的是我已經得到了你的問題。

在您的number_to_percentage(@portfolio.weights[cr.full_name] * 100)方法調用中,@portfolio.weights[cr.full_name]返回字符串0.2而不是float。

在你做紅寶石'hello' * 3時,它返回hellohellohello。 所以在你的情況下,它重複0.2,100次。

的解決方法是,使用to_f轉換的stringfloat

number_to_percentage(@portfolio.weights[cr.full_name].to_f * 100)