7

Ich möchte, dass Benutzer Markdown Text in einem Textfeld eingeben und wenn sie es veröffentlichen, zeige ich den entsprechenden HTML. Ich las, dass Rails verwendet, um eine markdown Methode haben oder ähnlich genannt Methode, dass Sie gerade auf diesem Feld in der ERB-Datei nennen könnten:Verwenden von Markdown mit Rails

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

Offenbar Rails diese Funktionalität nahm. Was ist der beste Weg, um diese Funktionalität wieder zu bekommen? Das scheint meine Bedürfnisse zu lösen.

Antwort

12

Ich würde Redcarpet verwenden, um die Markdown-HTML-Konvertierung zu tun. Außerdem würde ich die Konvertierung von der Ansicht zu einem anderen Objekt verschieben. Sie könnten callbacks (before_save) verwenden oder Observers verwenden.

Von 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>" 

Sie wahrscheinlich das Ergebnis in einer anderen Spalte speichern möchten, sagen @post.content_parsed so dass der Benutzer auf die Post später Änderungen vornehmen, und diese Weise brauchen Sie nicht zu machen Konvertierung bei jeder Anfrage

+1

Wo ist der beste Ort, um das Redcarpet :: Markdown-Objekt in einer Rails-App zu instanziieren? –

+0

Ich erweiterte die Antwort. –

+1

Die Redcarpet github-Seite schlägt vor, 'Redcarpet :: Markdown' nur einmal zu instanziieren und dann' render' aufzurufen, wie Sie es brauchen. Sinnvoll, aber wo instanziere ich 'Redcarpet :: Markdown' nur einmal in meiner Rails App? –