Ich definiere einige aktive Datensätze mit Akronymen. RvPark (Freizeitpark). Wenn ich den Klassennamen title, bekomme ich 'Rv Park'. Es sollte wirklich "RV Park" sein. Gibt es einen guten Weg, dies zu tun? Da dieses Modell Code mit anderen Modellen teilt, muss ich eine generische Lösung erstellen, aber es ist mir nicht gelungen, eine zu finden.
Ich habe eine Diskussion darüber gesehen, aber es gab keine Lösung, die für mich funktionierte. jede Einsicht wird geschätzt.
UPDATE: Akronym-Unterstützung wurde dem Rails Inflator hinzugefügt , nachdem ich dies gepostet habe. Siehe @ Ansons Antwort für Rails 3.2 und höher.
Das sieht nach einem Randfall aus, für den titleize
nicht entworfen wurde. Das Problem ist, dass der Aufruf von capitalize
in RV immer zu Rv wird.
Ich würde eine generische Namensfunktion für die Modelle erstellen, die self.class.titleize
intern aufrufen und dann im RVPark-Modell überladen.
Sie können dies tun, indem Sie ActiveSupport :: Inflector konfigurieren, wodurch titleize Methode. Definieren Sie einfach Ihre eigenen Flexionen in einem Initialisierer.
%Vor% Starten Sie Ihre App neu, um die Änderung zu übernehmen. Jetzt weiß titleize
, wie man mit "RV" umgeht. Starten Sie eine Rails-Konsole, um es auszuprobieren:
Siehe die verlinkten Dokumente für mehr coole Sachen, die du mit Beugungen machen kannst.
Tags und Links string ruby-on-rails