2012-04-14 2 views
3

Der Titel erklärt es so ziemlich. Ich schreibe eine Blog-Engine für mich selbst mit Ruby 1.9.3 und Rails 3.2.2 und ich muss in der Lage sein, den ersten Absatz von einem Beitrag (der als Texteinheit in der DB gespeichert ist) als Post zu verwenden Zusammenfassung für die Titelseite. Was ist der einfachste Weg dies zu tun?Ergreifung des ersten Absatzes aus einer Texteinheit mit RoR?

Google offenbarte sehr wenig zu diesem Thema; Es scheint kein allgemeines Bedürfnis zu sein.

Antwort

12

Die Antwort wird ziemlich offensichtlich, sobald Sie anfangen zu denken, was genau "einen Absatz" in Ihrer Welt definiert.

Wenn es die erste Liste von Zeichen gefolgt von zwei Zeilenvorschubzeichen ist? Etwas wie

str.split("\n\n", 2)[0] 

könnte funktionieren.

Wenn Sie HTML und Ihre Absätze haben, werden durch <p> Tags definiert, verwenden nokogiri wie

Nokogiri::HTML.parse(input_string).css('p').first.text 

Aber agin, es hängt alles davon ab, wie Sie Ihren Absatz definieren. Und solche Dinge lösen sich am häufigsten selbst, wenn Sie anfangen, darüber nachzudenken, was genau Sie haben möchten, d. H. Wie Sie die Eingabedaten auf abstrakte Weise in Ausgabedaten umwandeln können. Der erforderliche Algorithmus ergibt sich natürlich aus diesen Schritten.

+0

Danke, ich gebe das eine Chance. Als Objective-C-Programmierer, der erst seit einem Monat mit Ruby und Rails arbeitet, ist das Offensichtliche für mich noch nicht offensichtlich, haha. –

+1

Nun, Dinge wie Teilen/Suchen in einer Zeichenfolge, Regexes und XML-Parser sind überall verfügbar. Die meisten Konzepte sind mehr oder weniger in jeder Sprache gleich. Sie werden nur anders geschrieben :) –

0

Falls dies jemand helfen könnte, habe ich das gewünschte Ergebnis in RoR von Holger Just Nokogiri Lösung mit RedCloth Kombination der HTML-Tags zu erhalten:

Nokogiri::HTML.parse(raw RedCloth.new(input_string).to_html).css('p').first.text 
-1

str.lines [0] sollte Ihnen die erste Satz ... oder einfach truncate() ActionView Helper verwenden, wenn es Ihnen nichts ausmacht, mitten in einem Satz zu zerlegen