2017-04-23 102 views
0

我允許我的用戶創建作業並將其分發給他們的員工。分配有一個稱爲描述的屬性。而不是用戶填寫一個純文本字段來創建一個描述,我想給他們一個可編輯的減價支持框填寫。就像我現在填寫的那個。我從來沒有建立過這樣的事情,但我想知道是否有一個Ruby Gem或插件可以幫助我解決這個問題?支持在rails應用程序中進行Markdown編輯

回答

1

我可以推薦你SimpleMDE javascript markdown編輯器。在這種情況下,由於SimpleMDE可以爲您生成html版本,因此您不需要使用ruby gem來降價。你只需要在數據庫中保存兩個版本 - markdown和html。

我們有表assignments有兩個字段description保留降價版本和description_html保留html版本的問題。到目前爲止,您創建共同軌道分配的形式,並綁定simplemde實例到description textarea。對於description_html創建隱藏字段標籤:

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

在任何改變simplemde將一個HTML版本保存到description_html隱藏字段:

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

依靠javascript來生成html和「信任」這個html是安全的不是最好的主意。 – yoones

+0

@yoones wyswig編輯器也生成html代碼,並在任何地方使用。當然,一個安全的代碼應該清理html。 –

+0

這看起來不錯。一個問題,我如何將這些值保存在數據庫中? – Bitwise

1

我建議你使用GitHub的寶石爲:https://github.com/github/markup

首先安裝一對夫婦寶石:

  • github上/標記
  • HTML的管道
  • 引入nokogiri
  • 引入nokogiri-DIFF

然後嘗試以下操作:

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

我想使用GitHub的,但幾乎沒有任何文檔。 – Bitwise

+0

@Bitwise我剛剛添加了一個例子,你可以查看它。 – yoones