Ruby整数总是四舍五入到最接近的整数,并且不会保存小数位

时间:2018-11-15 01:49:23

标签: ruby-on-rails ruby

我有一个简单的表单,其中有一个fee输入,它是一个整数。我希望输入像金钱/价格一样通常存储-小数点后2位-无论输入如何。例如,如果有人在表单中输入5.1,我希望它在我的视图中显示5.10。目前,如果我输入5.1,则会显示5。无论输入什么形式,都会返回整数。

这是_form代码:

<%= simple_form_for @order do |f| %>

<%= f.input :start_point %>
<%= f.input :restaurant_location %>
<%= f.input :customer_location %>
<%= f.input :fee %>
<%= f.button :submit %>

<% end %>

这是我的索引视图中的代码:

<% @orders.each do |order| %>
    <h4 class="order-info"><%= order.start_point %></h4>
    <h4 class="order-info"><%= order.restaurant_location %></h4>
    <h4 class="order-info"><%= order.customer_location %></h4>
    <h4 class="order-info"><%= order.fee %></h4>
    <%= link_to "Edit", edit_order_path(order) %>
    <%= link_to "Delete", order_path(order), method: :delete, data: { confirm: "Are you sure?" } %>
<% end %>

如果我将其写为'%.2f' % order.fee,它将在视图中显示5.00,而不是5.10

1 个答案:

答案 0 :(得分:0)

您似乎将值存储为整数数据类型,可以将其更改为浮点数以存储并在迁移后显示小数点后显示值,并添加以下行以更改迁移中的数据类型。

rails g migration change_fee_to_be_float_in_orders
  

以及您的迁移

class ChangeFeeToBeFloatInOrders
  def up
   change_column :orders, :fee, :float
  end

  def down
    change_column :orders, :fee, :integer
  end
end