Целое число в Ruby всегда округляется до ближайшего целого числа и не сохраняет десятичные разряды - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть простая форма с вводом для 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 голосов
/ 15 ноября 2018

Похоже, что вы сохраняете свое значение в целочисленном типе данных, вы можете изменить его в float для хранения и отображения значений после записи десятичной точки после миграции и добавить следующую строку, чтобы изменить тип данных в вашей миграции.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...