0

PERIOD と GENERAL LEDGER でグリッドを表示する Rails ビューがあり、累積合計を表示したいと考えています。ただし、以下のケースでは、"TOTAL" 列の @cumulative_total が最も近いドルに切り上げられているため、general_ledger 列に正しく表示されていても、セントは表示されません。私が間違っていることはありますか?

<% @cumulative_total = 0 %>
<div id="gl_crosstab">
  <table>
    <tr>
      <th>Period</th>
      <% @general_ledgers.each do |g| %>
        <th><%= g.general_ledger_number %></th>
      <% end %>
      <th>Total</th>
      <th>% Expended</th>
    </tr>
    <% @expected_billings.group_by(&:period_id).each do |eb| %>
      <tr>
        <td><%= eb[1].first.period.pe_number %></td>
        <% eb[1].each do|p| %>
          <td><%= number_to_currency(p.expected_amount) %></td>
        <% end %>
        <td>
          <% @cumulative_total = @cumulative_total + eb[1].inject(0){|sum,billing| sum+billing.expected_amount.to_i} %>
          <%=  number_to_currency( @cumulative_total ) %> </td>
        <td><%= number_to_currency((@cumulative_total/@sla.project_total)*100) %> % </td>
      </tr>
    <% end %>
    <tr>
      <td><b>Total Budget</td>
      <% @total_expected_billings.each do |teb| %>
        <td><b><%= number_to_currency(teb[1].inject(0){|sum,billing| sum+billing.expected_amount.to_i}) %></td>
      <% end %>
      <td><b><%= number_to_currency(@expected_billings.inject(0){|sum,billing| sum+billing.expected_amount.to_i}) %> </td>
      <td><b><%= number_to_currency((@expected_billings.inject(0){|sum,billing| sum+billing.expected_amount.to_i}/@sla.project_total)*100) %> % </b></td>
    </tr>
  </table>
</div>
4

1 に答える 1

0

I think that is because you are converting the billing amount to 'integers' while displaying:

@expected_billings.inject(0){|sum,billing| sum+billing.expected_amount.to_i

If you change

billing.expected_amount.to_i  

to

billing.expected_amount.to_f  

it should work.

于 2012-05-02T06:53:49.623 に答える