2015-12-09 2 views
0

У меня есть поле с именем price_in_cents для таблицы материалов. Я хочу отобразить все значения price_in_cents как выпадающие доллары.Как конвертировать центы в доллары для всех выпадающих значений в Rails

Вот код:

<%= select_tag 'price_in_cents', "<option value='blank'>(empty)</option>"+options_for_select(Material.pluck(:price_in_cents).compact.uniq),include_blank: true, class: 'form-control' %> 

На самом деле price_in_dollars = self.price_in_cents/(100*100).to_d

Для примера цена 10200 должна отображаться в 1.02.

Как написать или упомянуть значения как price_in_cents/(100 * 100) .to_d в раскрывающемся списке?

ответ

1

Вы можете попробовать так:

<%= select_tag 'price_in_cents', "<option value='blank'>(empty)</option>"+options_for_select(Material.pluck('price_in_cents/(100*100)').compact.uniq),include_blank: true, class: 'form-control' %> 

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

Material.pluck('CAST(price_in_cents/(100.0*100.0) as decimal)').compact.uniq 

Я дал пример PostgreSQL

+0

А также мне нужно преобразовать в десятичные знаки. Например, цена ** 10200 ** должна отображаться как ** 1.02 **. – venkat

+0

Я отредактировал данный вопрос – venkat

+1

Попробуйте это Material.pluck ('CAST (price_in_cents/(100.0 * 100.0) как десятичный)'). Compact.uniq –

0

Вы, вероятно, хотите, чтобы сохранить эту логику преобразования из вашего views-- это звучит как ситуация, когда Decorator Pattern будет уместным и порекомендовал бы посмотреть на драгоценный камень, как Draper. Вы можете добавить метод price_in_dollars к вашему MaterialsDecorator и использовать на ваш взгляд украшенный @materials.

Или, если вы строго ищете массив этих значений, может потребоваться метод класса, такой как Material.prices_in_dollars.

0

Если вы имеете дело с деньгами, я предлагаю вам использовать что-то вроде money-rails, это добавит нужным читателям и писателям для доступа к денежной стоимости в долларах и спасет вас от округлых головных болей.

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