2012-03-03 3 views
0

У меня есть форма с вводом (price), которую пользователь заполняет такими значениями, как: 12,50 или 110,90 (французские цены).Rails: изменить значение атрибута в параметрах

Так в контроллере я: @quote = current_user.company.quotes.build!(params[:quote])

Проблема заключается в том, что рельсы behaives с десятичными знаками в US образом. Таким образом, это сохраняет цену с ценой 12.00 или 111.90

Так как я могу сказать, что рельсы действительно рассматривают европейскую версию десятичных знаков?

Спасибо.

ОБНОВЛЕНИЕ

Решение состоит в том, чтобы добавить этот метод к Quote модели.

def price=(data) write_attribute(:price, data.to_s.gsub(',', '.')) end 

Это заменит , с .. Спасибо Оливье за ​​подсказку.

ответ

1

Поскольку вы на самом деле имеете дело с десятичными запятыми, преобразуйте их в десятичное число 12,50 -> 12,5, прежде чем хранить его, вы можете легко выполнить любую арифметику на нем.

Это будет строка в параметрах, чтобы вы могли использовать sub для замены. Вы можете сделать это в модели, переопределив метод setter price=.

Преобразуйте его в 12,50 в поле зрения при его отображении.

Смежные вопросы