Lerne mehr über Ruby on Rails mit Martin Labuschins
Ruby on Rails Link Library.
def shorten (string, count = 30)
# String::shorten (naiv)
# Autor: Martin Labuschin
# Erstellt am 29.Juli 2007
# String wird auf die durch count (optional, standard 30) bestimmte Anzahl von Zeichen gekürzt. Es werden dann ganze Wörter (erkannt durch Leerräume) zurückgegeben. Falls wirklich eine Kürzung duchgeführt wurde, wird ' ...' angehangen.
# BEMERKUNG: Es wird nur Plaintext erwartet
if string.length >= count
shortened = string[0, count]
splitted = shortened.split(/ /)
words = splitted.length
splitted[0, words-1].join(" ") + ' ...'
else
string
end
end
Hier noch mal sinnvoller eingerückt: http://pastie.caboo.se/83383
Funktionieren tun beide Beispiele. Du erweiterst aber die Klasse 'String', ich das Modul 'ApplicationHelper'. Ich denke in Rails-Projekten ist mein Ansatz mE die saubere Lösung.
Jedoch muss ich zugeben, dass deine einfacher anzuwenden ist.
Hm, kann sein dass es in Rails besser ist diesen ApplicationHelper dazu zu verwenden. Ich habe nie mit Rails gearbeitet, deshalb kenne ich die Struktur nicht.
Das Modul ApplicationHelper stellt darin enthaltene Methoden nur in dem Views (Templates) des MVC-Models bereit. In den meisten Anwendungsfällen würde das ausreichen.
Ich hatte diese Seite jetzt schon unendlich lange als Tab geöffnet, heute konnte ich es endlich einsetzen und mir eine ähnliche Funktion ableiten.
Danke für das Snippet!
Nächste mal einfach bookmarken. Als Tab nervt's doch irgendwann... oder nicht ;)
Jeena Paradies
29.07.2007
Der Ansatz ist nett, aber ich hätte das so gelöst:
class String
def word_shorten ( length = 30 )
if self.length >= length
short = self[0, length].split(/ /)
short[0, short.length-1].join(" ") + ' …'
else
self
end
end
end
puts "Lorem ipsum dolor sit amet.".word_shorten(10)