Hat Rails das Gegenteil von 'humanize' für Strings?
Schienen fügt eine humanize()
- Methode für strings, die wie folgt funktioniert (von den Schienen RDoc):
"employee_salary".humanize # => "Employee salary"
"author_id".humanize # => "Author"
Ich möchte den anderen Weg gehen. Ich habe "ziemlich" Eingabe von einem Benutzer, ich will 'de-humanisieren" für das schreiben zu einem Modell, das Attribut:
"Employee salary" # => employee_salary
"Some Title: Sub-title" # => some_title_sub_title
Tut rails gehören jede Hilfe für diese?
Update
In der Zwischenzeit habe ich noch folgende app/controllers/application_controller.rb:
class String
def dehumanize
self.downcase.squish.gsub( /\s/, '_' )
end
end
Gibt es einen besseren Ort, um es?
Lösung
Dank, fdfür die link. Ich habe die Lösung implementiert empfohlen es. In meiner config/Initialisierungen/Infektionen.rb, ich habe Folgendes am Ende:
module ActiveSupport::Inflector
# does the opposite of humanize ... mostly.
# Basically does a space-substituting .underscore
def dehumanize(the_string)
result = the_string.to_s.dup
result.downcase.gsub(/+/,'_')
end
end
class String
def dehumanize
ActiveSupport::Inflector.dehumanize(self)
end
end
InformationsquelleAutor der Frage irkenInvader | 2010-05-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
den
string.parameterize.underscore
erhalten Sie das gleiche Ergebnisoder Sie können auch verwenden, die ist etwas kürzer (Dank @danielricecodes).
InformationsquelleAutor der Antwort giladbu
Es nicht angezeigt, eine solche Methode in der Rail-API. Dennoch habe ich in diesem blog-post, bietet eine (teilweise) Lösung: http://rubyglasses.blogspot.com/2009/04/dehumanizing-rails.html
InformationsquelleAutor der Antwort Mike Tunnicliffe
In http://as.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html Sie haben einige Methoden verwendet, um prettify und un-prettify-strings.
InformationsquelleAutor der Antwort fuzzyalej