2010-12-23 3 views
1

Ich habe eine Ruby on Rails App entwickelt, mit der Benutzer ihre Trainingseinheiten verfolgen können. Ich erlaube ihnen auch (wie ein Blog), Tags für ihre Workouts zu erstellen. Wenn Benutzer ihrem Training Tags hinzufügen, werden sie durch auto_complete unterstützt, damit die Dinge organisiert bleiben.Downcasing & Upcasing in Ruby on Rails

Da die Seite an Popularität zugenommen hat, bekomme ich wegen der Großschreibung ein bisschen Durcheinander/Inkonsistenz. Gibt es eine Möglichkeit, der App zu sagen, dass sie nur tag.name in Groß- oder Kleinbuchstaben erstellen soll?

+0

Welche ORM verwenden Sie? Aktiver Rekord? Folge? Diese Logik sollte so nah wie möglich an der DB sein, idealerweise in einem gespeicherten Proc in der DB selbst oder zumindest in einem before_save Hook am Modell. – Phrogz

Antwort

6

Versuchen Sie so etwas wie:

class Tag < AR::Base 
    before_save :downcase_name 

    private 

    def downcase_name 
    self.name.downcase! 
    end 
end 
0

Ruby hat eine upcase und downcase auf der String-Klasse, die Sie entweder tun können. Rufen Sie einfach vor dem Speichern der Daten auf.

Zum Beispiel, wenn Sie die simple_auto_complete Juwel verwenden, können Sie folgendes tun:

class BlogController < ApplicationController 
    autocomplete_for :post, :title do |items| 
     items.map {|x| x.upcase} 
    end 
end 

ich jetzt dieses Recht nicht testen können, so verzeiht mir, wenn es Syntaxfehler.

+0

Ich benutze dieses Juwel nicht, aber dieses Plugin: https://github.com/rails/auto_complete. Würde das die Dinge ändern? – bgadoci

+0

Sie sollten in der Lage sein, das Gleiche zu tun. Obwohl ich keine Erfahrung mit dem Auto_Complete-Plugin habe und momentan nichts testen kann. – sgriffinusa

+0

Soll dieser Code die zurückgegebene group.name aus der Tabelle in einem UPPERCASE-Format beeinflussen? Wenn das so ist, dann funktioniert das nicht. Ich weiß, dass du es jetzt nicht testen kannst, also werde ich damit herumspielen. Korrigiere mich, wenn mein Denken hier falsch ist. – bgadoci