2012-04-14 3 views
3

Название в значительной степени объясняет это. Я пишу блок-блог для себя с Ruby 1.9.3 и Rails 3.2.2, и мне нужно иметь возможность захватить первый абзац из сообщения (которое хранится как текстовое подразделение в БД) для использования в качестве сообщения резюме для первой страницы. Каков самый простой способ сделать это?Схват первого абзаца из текстового блока с помощью RoR?

В этом вопросе Google мало что говорит; это не похоже на общую потребность.

ответ

12

Ответ становится очевидным, как только вы начинаете думать о том, что именно определяет «абзац» в вашем мире.

Если это первый список символов, сопровождаемый двумя символами новой строки? Что-то вроде

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

может работать.

Если у вас есть HTML и абзацы определяются <p> тегами, используйте nokogiri как

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

Но Агинский, все это зависит от того, как вы определяете свой пункт. И такие вещи чаще всего решаются, как только вы начинаете думать о том, что именно вы хотите иметь, т. Е. Как преобразовать входные данные в выходные данные абстрактным образом. Из этих шагов естественно вытекает требуемый алгоритм.

+0

Спасибо, я дам этот снимок. Как программист Objective-C, работавший как с Ruby, так и с Rails в течение примерно месяца, очевидное для меня еще совсем не очевидно, ха-ха. –

+1

Ну, такие вещи, как разбиение/поиск в строках, регулярные выражения и синтаксические анализаторы XML доступны везде. Большинство концепций более или менее одинаковы на каждом языке. Они просто написаны по-разному :) –

0

В случае, если это может помочь кому-то, я получил желаемый результат в RoR, комбинируя решение Хольгера Жюста Nokogiri с RedCloth, чтобы получить HTML-теги:

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

str.lines [0] должно дать вам первый предложение ... или просто используйте truncate() ActionView Helper, если вы не против расщепления в середине предложения

Смежные вопросы