Есть небольшие изменения в HTML. Вы можете сослаться JsFiddle
{{register.regData.branch.chapter_name}}
Если у Вас есть свое сердце при унавоживании с Числовым (или целое число, и т.д.) класс для получения преобразования единицы, то, по крайней мере, делают это логически и с некоторым действительным значением.
Во-первых, создайте класс Единицы, который хранит тип единицы (метры, футы, локтевые кости, и т.д.) и значение на создании. Затем добавьте набор методов к Числовым, которые соответствуют допустимой единице значений, может иметь: эти методы возвратят объект Единицы с, он - тип, зарегистрированный как имя метода. Класс Единицы поддерживал бы набор to_* методов, которые преобразуют в другой тип единицы с соответствующей стоимостью единицы. Тем путем можно сделать следующую команду:
>> x = 47.feet.to_meters
=> 14.3256
>> x.inspect
=> #<Unit 0xb795efb8 @value=14.3256, @type=:meter>
Лучшим способом обработать его, вероятно, была бы матрица типов преобразования и выражений в классе Единицы, затем использовать method_missing, чтобы проверить, может ли данный тип быть преобразован в другой тип. В числовом классе используйте method_missing для выяснения у Единицы, если это поддерживает данный метод как тип единицы, и если так, возвратите объект единицы требуемого типа с помощью числового в качестве его значения. Вы могли затем поддерживать добавляющие единицы и преобразования во времени выполнения путем добавления register_type и register_conversion метода класса для Единицы, которая расширила матрицу преобразования, и Числовой "автоволшебно" возьмет способность.
Что касается того, где поместить его, создайте lib/units.rb файл, который также содержал бы monkey_patch к Числовому, затем инициализировать его в config/environment.rb bu требование lib/units.rb файла.
Почему не просто:
class Feet
def self.in_miles(feet)
feet/5280
end
end
использование:
Feet.in_miles 2313
Или, возможно, посмотрите на него другой путь:
class Miles
def self.from_feet(feet)
feet/5280
end
end
Miles.from_feet 2313
Создайте свой собственный модуль/библиотеку, который Вы включаете в объем при необходимости в нем для выполнения этой задачи.
Такой как "requre 'unitCoversions'"
И Возможности, кто-то уже сделал это, если Вы выглядите достаточно твердыми :)
Однако не пытайтесь изменить собственный базовый класс, который только закончится в Страдании.
(Кроме того, класс, который Вы хотите расширить, является 'числовым', который будет относиться и к Целым числам и к Плаваниям :))
Не совсем ясный, почему я не должен делать этого... Направляющие делают это к строковому классу к большому успеху.
Поскольку это может быть сделано, не означает, что это должно быть сделано. 'У обезьяны, Исправляющей', как это известно, могут быть все виды нечетных побочных эффектов, и они могут быть эпическим отказом, когда сделано неправильно.
Сделайте это, когда не будет никакой хорошей альтернативы.
Поскольку, если Вы действительно хотели сделать что-то ненормальное, Вы могли бы создать всю платформу, что ВСЕ, что оно сделало, было патчем обезьяны базовые классы.
Просто, например, зеркальное отражение databasing на его голове.
5.getArtist();
10.getEvent();
100.getTrack();
и т.д. и т.д. нет никакого предела тому, сколько плохих путей там состоит в том, чтобы сделать это.
"Bob".createUser();
страдание в чашке.
Если Вы хотите сделать что-то практическое, имейте класс Преобразования или функцию,
convert( 3 , { :from=>:miles, :to=>:meters });
по крайней мере, Вы не загрязняете глобальное пространство имен и базовые функции тот путь, и это имеет больше когерентного смысла.
Я соглашаюсь, что исправление обезьяны должно использоваться с осторожностью, но иногда это просто имеет смысл. Мне действительно нравятся помощники, которые позволяют Вам типу 5.days.ago, которые являются частью active_support библиотеки
Таким образом, некоторые из других ответов могли бы быть лучше в этом случае, но если Вы расширяете рубиновые классы, мы сохраняем все наши расширения в lib/extensions/class_name.rb
этот путь при работе над проектом это быстро и легко найти и видеть что-либо, что могло бы быть необычно со стандартными классами.
Обычно (и логически), целые числа не могут быть преобразованы в мили или в метры. Это кажется, что можно хотеть создать новый класс как "Футы" или "дюймы", который инициализируется с целым числом, затем содержит методы как size_in_miles или size_in_meters. Для удобства те методы могли возвратить десятичное число или пустить в ход типы, но Вы могли бы также хотеть записать класс миль или класс метров.
Как альтернативный метод, Вы могли бы хотеть создать статический метод в своем новом классе, который будет иметь подпись как это:
Float feetToMiles(integer I)
то, что Вы звонили бы
miles = Feet.feetToMiles(5280);
и доберитесь miles = 1.0
Если бы Вы собирались сделать это, которое Вы не были должны, то Вы поместили бы свой код в:
config/initializers/add_methods_that_are_naughty_to_numeric.rb
Направляющие автоматически выполнили бы их для Вас.