7

Chcę, aby użytkownicy wpisywali tekst Markdown w obszarze tekstowym, a kiedy go publikują, wyświetlałem odpowiedni html. Czytałem, że Szyny używane mieć metodę markdown lub podobnie zwanej metody, które można po prostu zadzwonić na tym polu w pliku ERB:Używanie Markdown z Railsami

<%= markdown(@post.content) %> 

Najwyraźniej Szyny wziął ten funkcjonalności. Jaki jest najlepszy sposób, aby ponownie uzyskać tę funkcjonalność? To wydaje się rozwiązać moją potrzebę.

Odpowiedz

12

Chciałbym użyć Redcarpet do konwersji markdown-html. Przenosiłbym także konwersję z widoku na inny obiekt. Można użyć callbacks (before_save) lub użyć Observers.

Od the docs:

markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, 
    :autolink => true, :space_after_headers => true) 

markdown.render("This is *bongos*, indeed.") 
#=> "<p>This is <em>bongos</em>, indeed</p>" 

Prawdopodobnie chcesz zapisać wynik w innej kolumnie, powiedzmy @post.content_parsed, dzięki czemu użytkownik może później edytuje do słupka, a także w ten sposób nie trzeba, aby konwersja na każde żądanie.

+1

Gdzie jest najlepsze miejsce do utworzenia instancji Redcarpet :: Markdown w aplikacji Rails? –

+0

Rozszerzyłem odpowiedź. –

+1

Strona github Redcarpet sugeruje utworzenie tylko 'Redcarpet :: Markdown', a następnie wywołanie' render', jak tego potrzebujesz. Ma sens, ale gdzie mogę utworzyć 'Redcarpet :: Markdown' tylko raz w mojej aplikacji Rails? –