2017-04-23 4 views
0

Ich erlaube meinen Benutzern, Aufgaben zu erstellen und sie an ihre Mitarbeiter zu verteilen. Zuweisungen haben ein Attribut namens description. Anstatt Benutzer ein einfaches Textfeld auszufüllen, um eine Beschreibung zu erstellen, möchte ich ihnen eine editierbare Markdown-unterstützte Box geben, um sie auszufüllen. Genau wie die, die ich gerade ausfülle. Ich habe noch nie so etwas gebaut, aber ich frage mich, ob es ein Ruby-Juwel oder ein Plugin gibt, das mir dabei helfen wird?Unterstützung Markdown-Bearbeitung in Schienen App

Antwort

1

Ich kann Ihnen SimpleMDE Javascript Abschlags Redakteur. In diesem Fall benötigen Sie keinen Ruby-Edelstein für Markdown, da SimpleMDE HTML-Version für Sie generieren kann. Sie müssen nur in Ihrer Datenbank beide Versionen speichern - Markdown und HTML.

Wir haben Tabelle assignments mit zwei Feldern description, um eine Abschriftversion zu behalten und description_html, um eine HTML-Version einer Frage zu behalten. So weit Sie das Formular für Common-Rail-Zuweisungen erstellen und die SimpleMde-Instanz an description textarea binden. Für description_html verstecktes Feld Tag erstellen:

<%= f.hidden_field :description_html %> 
<%= f.textarea :description %> 

Auf jeder Änderung simplemde wird eine HTML-Version zu description_html verstecktem Feld speichern:

var simplemde = new SimpleMDE({ element: $("#MyID")[0] }); 
    simplemde.codemirror.on("change", function(){ 
    # set a html to a hidden field 
    $('#description_html_id_CHANGE_IT').val(simplemde.getHtmlValue()); 
}); 
+0

Sich auf Javascript verlassen, um HTML zu generieren und "vertrauend", dieses HTML, um sicher zu sein, ist nicht die beste Idee. – yoones

+0

@yoones Wyswig-Editoren generiert auch HTML-Code und ihre überall verwendet. Natürlich sollte ein sicherer Code einen HTML-Code bereinigen. –

+0

Das sieht gut aus. Eine Frage, wie genau kann ich diesen Wert in der Datenbank speichern? – Bitwise

1

Ich schlage vor, verwenden Sie Github ist gem dafür: https://github.com/github/markup

Zuerst ein paar Edelsteine ​​installieren:

  • Github/Markup
  • html-Pipeline
  • nokogiri
  • nokogiri-diff

Dann versuchen Sie Folgendes:

require "github/markup" 
require 'html/pipeline' 
require 'nokogiri' 
require 'nokogiri/diff' 

filename = ARGV.first 
puts GitHub::Markup.render(filename, File.read(filename)).strip.force_encoding("utf-8") 
+0

ich Github ist verwenden möchte, aber es gibt so gut wie keine Dokumentation. – Bitwise

+0

@Bitwise Ich habe gerade ein Beispiel hinzugefügt, Sie können es überprüfen. – yoones