Rails数字奇怪地添加(将运费添加到总计)

时间:2017-07-16 18:55:07

标签: ruby-on-rails ruby

我在我的应用上设置了商店,在结帐流程的一个阶段,它必须将运费添加到小计以获得总数(应该很简单)。但是,当运费是一位数(例如($ 2.00))时,它会正确添加:

  

$ 32小计+ $ 6运费= $ 38总计

但是,当运费是两位数时,它会像这样添加:

  

$ 32小计+ $ 23运费= $ 34总计

从我能说的一切来看,它一定是地方价值观的一部分,但我无法弄清楚它是什么,让我相信那里有一些特殊的Ruby我正在做的事情错。

在我的ERB视图中,以下是表单的外观:

  <% shipping_choices = [] %>
    <% @usps_rates.each do |rate| %>
      <% choice = [] %>
      <% choice << [rate[1], rate[0]] %> <!-- value ( $, desc ) -->
      <% choice << number_to_currency(rate[1]/100, precision: 2).to_s + " - " + rate[0].to_s %> <!-- description -->
      <% shipping_choices << choice %>
    <% end %>
    <%= simple_form_for @order, url: charges_update_order_path(:shipping), method: :post do |f| %>
      <div class="row">
        <div class="form-inputs text-left">
          <div class="form-group">
            <%= f.collection_radio_buttons :shipping, shipping_choices, :first, :last, item_wrapper_class: :block_radio_button_collection %>
          </div>
        </div> <!-- form inputs -->
      </div> <!-- choices row -->
      <div class="row">
        <%= f.button :submit, "Continue to Billing", class: "btn btn-manly" %>
      </div>
    <% end %>

这是保存信息的order模型:

def update_order_from_shipping_page(shipping_pair)
  self.shipping = shipping_pair[0]
  self.shipping_choice = shipping_pair[1]
  new_total = self.subtotal + self.shipping
  self.update_attributes(total: new_total, shipping_choice: self.shipping_choice)
end

任何人都可以看到出错的地方吗?

1 个答案:

答案 0 :(得分:0)

原来这一行:

number_to_currency(rate[1]/100, precision: 2).to_s

围绕它的括号如下:

(number_to_currency(rate[1]/100, precision: 2)).to_s

出于某种原因,这就是伎俩。