Rails: изменить значение атрибута в параметрах - PullRequest
0 голосов
/ 03 марта 2012

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

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

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

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

Спасибо.

ОБНОВЛЕНИЕ

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

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

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

1 Ответ

1 голос
/ 04 марта 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...