Перегрузка рендеринга типов данных в Rails - PullRequest
0 голосов
/ 09 мая 2018

Есть ли простой способ перегрузить рендеринг типов данных в Rails?

Например, логическое отображение:

true  #=> ?
false #=> ?

или Integer as:

6  #=> 'six'
10 #=> 'ten'

Я надеялся, что для имен столбцов будет http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models, для типа данных столбца будет что-то запрограммированное.

Это довольно близко https://blog.arkency.com/2016/03/custom-typecasting-with-activerecord-virtus-and-dry-types/. Но что-то встроенное было бы лучше;)

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Есть ли простой способ перегрузить рендеринг типов данных в Rails?

Передайте ваши данные через помощника рендеринга:

class ApplicationHelper
  # "mf" for my_format
  def mf(value)
    case value
    when true
      '?'
    when false
      '?'
    when Integer
      value.to_english_words # or something like that
    else
      value # unchanged
    end
  end
end

Тогда в представлениях.

<%= mf user.approved? %>
<%= mf user.age %>
0 голосов
/ 09 мая 2018

Вы можете сделать это, переписав метод класса to_s, например:

class TrueClass
  def to_s
    'foo' 
  end
end

puts true #=> 'foo'

Я не уверен, что это всегда будет отличная идея, но вот как это можно сделать:)

Для целых чисел вам нужно написать что-то, чтобы преобразовать их, или использовать гем типа numbers_and_words , но вышеописанный подход все равно будет применяться.

Надеюсь, что вы направитесь в правильном направлении! Дайте мне знать, если у вас есть какие-либо вопросы.

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