2017-01-19 4 views
0

Все целые числа по умолчанию ограничены ','.Удалить все целые числа в рельсах

Для примера: 123456 показано как 1,23,456.

Есть ли способ удалить ',' из всех целых чисел для всех таблиц.

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

config.columns[:<int_field>].options={:i18n_options => {delimiter: ""}}

Есть ли способ сделать это для всех целых полей?

PS: Использование Activescaffolding в моем приложении.

Спасибо.

+2

Хранится как в хранилище DB? БД не имеет разделителя при хранении как целого. – Victor

+0

Кажется, это из-за I18n. Вы уверены, что это сохранено в базе данных –

+0

К сожалению! Вы правы @Victor. Он не хранится в БД с помощью «,». Это просто отображается в приложении таким образом. – Mounika

ответ

2

Использование tr как: -

2.0.0-p645 :005 > "1,23,456".tr(',', '') 
=> "123456" 

Преобразовать результат в целое, как: -

2.0.0-p645 :005 > "1,23,456".tr(',', '').to_i 
=> 123456 

Проверить методы в строке в irb как: -

"".methods 

Используйте его в вид как: -

<%= "1,23,456".tr(',', '').to_i %> 

Для получения более подробной информации see the document

+0

У меня нет отдельных представлений для таблиц, поскольку я использую activescaffolding. Есть ли другой способ, который не включает взгляды? – Mounika

0

Я предполагаю, что Rails с Activescaffold использует правила форматирования из своего модуля I18n по умолчанию. Вы можете изменить их в config/locales/en-US.yml. Here is the default one with the relevant lines highlighted.

Это должно повлиять на все форматирование чисел в представлениях. Я думаю, вы просто должны изменить разделитель в пустую строку:

... 
format: 
    delimiter: "" 
... 

Вы можете найти общую информацию о Rails I18n в соответствующем I18n guide.

+0

Звучит правильно. Не уверен, почему он не работает для меня. Я только что нашел альтернативное решение. – Mounika

0

Это сработало отлично.

Добавлены следующие строки в application_helper.rb:

def format_number_value(value, delimiter = '') 
    if value.is_a? Integer 
    ActiveSupport::NumberHelper.number_to_delimited(value, delimiter: '') 
    else 
    super 
    end 
end 

Спасибо.

+0

Я думаю, что это переопределит Activescaffolds собственный 'format_number_value': http://www.rubydoc.info/gems/active_scaffold/3.4.37/ActiveScaffold%2FHelpers%2FListColumnHelpers%3Aformat_number_value Будьте осторожны! Ваша реализация несовместима (ваш принимает разные параметры). –

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