Ich versuche, eine sehr komplexe Blackbox dazu zu bringen, einige Floats anders darzustellen (es ist die Gruff-Graphikbibliothek, also wird diese zu einem Bild gerendert).Überschreiben von Basisklassenmethoden in einem Controller
in der Konsole kann ich diese Paste:
logger = RAILS_DEFAULT_LOGGER
logger.debug "Here's a float #{455.67.to_s}"
eval %{class Float
def to_s_with_time
h = (self/60).to_i
m = self.to_i % 60
return h.to_s + ':' + m.to_s
end
alias_method_chain :to_s, :time
end
}
logger.debug "Here's another #{455.67.to_s}"
Und ich werde
Here is a float 455.67
Here is another 7:35
sehen Aber wenn ich den gleichen Code in einen Controller einfügen, ich sehe
Here is a float 455.67
Here is another 455.67
Warum kann ich Float.to_s nicht in einem Controller ersetzen? Ich werde auch Antworten auf die Frage "Was ist ein besserer Weg, dies zu erreichen?" Akzeptieren.
I aufgewickelten Zugabe dieses (plus ein attr_accessor) mit dem "label" Verfahren in Gruff Basis, die vollständig funktioniert: wenn @is_minutes return „# {sprintf ('% 02i', value.to_i/60)} : # {sprintf ('% 02i', value.to_i% 60)} " Ende Ich möchte jedoch immer noch eine Lösung, die nicht einfrieren und dann das Plugin anpassen. –
Warum erstellen Sie nicht einfach eine Methode, an die Sie den Float übergeben - warum müssen Sie Float selbst überladen? –