Helpers - компьютеры, интернет, программирование

Как настроить Rails для вывода десятичных знаков с правильной точностью в полях формы?

Я хочу хранить валюты в своих базах данных (sqlite и mysql). Я пытаюсь использовать тип столбца decimal с :scale => 2.

Это ведет себя не так, как ожидалось. Если я сохраню запись с :rate => 10.50, она сохранится в моей базе данных sqlite как 10.5. Кроме того, когда я вывожу значение в поле формы, оно отображается как 10.5.

Я не хочу делать хакерское форматирование строк каждый раз, когда я хочу красиво отображать значения в формах Rails.

Есть ли способ обойти это? Это что-то из sqlite? Я просто неправильно понимаю тип столбца decimal?

Изменить:

Чтобы уточнить, я хочу иметь возможность использовать обычные методы генерации формы:

- form_for @project do |f|
  = f.text_field :rate

Если мне нужно явно отформатировать вывод, мне придется создать дополнительные методы для каждого десятичного атрибута:

def formatted_rate
  "%.2f" % rate
end

= f.text_field :formatted_rate

Существуют ли какие-либо другие распространенные приемы для принудительного форматирования вывода и использования стандартного конструктора форм Rails?


  • Нет ничего хакерского в кодировании ваших представлений для отображения чисел с точностью до двух знаков после запятой; это идеальное решение. Когда вы указываете десятичную точность, вы указываете максимум, а не минимум — числа никогда не будут храниться с завершающими или ведущими нулями. 19.10.2010
  • Хотя это и не точный дубликат, почти все эти ответы применимы: stackoverflow.com/questions/591939/ 19.10.2010

Ответы:


1

Вы можете использовать помощник по числам Rails ActionView number_with_precision :

number_with_precision(my_number, :precision => 2)
19.10.2010
  • Это не поможет мне красиво вывести значение в поле формы 19.10.2010
  • Существует также метод number_to_currency. 19.10.2010
  • @нфм <%= f.text_field :rate, :value => number_with_precision(f.object.rate) %> 19.10.2010

  • 2

    В итоге я написал плагин для этого: currency_text_field.

    Вы можете определить свои форматы (аргументы для number_with_precision) в config/initializers/currency_text_field_initializer.rb.

    Затем вы используете f.currency_text_field :rate в своей форме с необязательным аргументом :format для использования именованного формата в инициализаторе. В противном случае он использует format[:default] из инициализатора.

    Тот же подход, что и при явной установке value, но все это делается за кулисами и наборы параметров называются number_with_precision.

    19.10.2010
    Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

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

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..