2017-04-23 5 views
0

私はユーザが割り当てを作成して従業員に配布できるようにしました。割り当てには、descriptionという属性があります。ユーザーがプレーンテキストフィールドに記入して説明を作成するのではなく、編集可能なマークダウンサポートボックスに記入したいと思います。私はこれまでにこのようなものを構築したことはありませんでしたが、これで私を助けるRubyの宝石やプラグインがあるのだろうか?レール内でのマークダウン編集のサポート

答えて

1

私はあなたにSimpleMDE javascriptの値下げエディタをお勧めすることができます。 SimpleMDEがあなたのためにHTMLバージョンを生成することができるので、この場合、マークダウンのためのルビーの宝石は必要ありません。 markdownとhtmlの両方のバージョンをデータベースに保存するだけです。

テーブルassignmentsには、マークダウンバージョンを保持するための2つのフィールドdescriptionと、質問のhtmlバージョンを保持するdescription_htmlという2つのフィールドがあります。これまでのところ、一般的なレールの割り当てフォームを作成し、simplemdeインスタンスをdescription textareaにバインドしました。 description_html隠しフィールドへのHTMLバージョンを保存する任意の変更simplemdeで

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

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

これは素晴らしいですね。 1つの質問、どのように正確にそれらの値をデータベースに保存するのですか? – Bitwise

1

私はあなたがそのためのgithubのの宝石を使用することをお勧め:https://github.com/github/markup

まず宝石のカップルインストール:

  • githubの/マークアップを
  • のhtml-パイプライン
  • 鋸山
  • 鋸山、デフ

は、その後、次のことを試してください。

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

関連する問題