2

ここでのスタックオーバーフローと同様のライブ プレビューが必要です。Rails 3.1 と RedCloth を使用して、それを機能させる方法を理解できないようです。

このような独自の Ajax 呼び出しを作成してみました (posts.js.coffee 内)

$ ->
 $('#post_content').keyup ->
  $.post('posts/preview', $('#post_content').val(), null, "script")

コントローラ内に機能を持つ

def preview
 @content = params[:post_content]

 respond_to do |f|
  f.js
 end
end

preview.js.erb に入れました

$("#preview").html("<% raw RedCloth.new(@content).to_html %>");

リソースを追加しました

resources :post do
 post 'preview', :on => :collection
end

しかし、うまくいきません。助言がありますか?

4

2 に答える 2

3

クライアント側でプレビューを解析する方がはるかに賢明だったので、皆さんの知恵の言葉に感謝します。Markdown パーサー (サーバー側) のbluecloth 2.1.0に切り替えて、

gem "bluecloth", "~> 2.1.0"

クライアント側のパーサーについては、PageDownを使用しました

次に、それを機能させるために小さなスニペットを追加するだけで済みました。

converter = new Markdown.Converter()
$ ->
  if $('#post_content').val() isnt ''
   $('.preview').empty().append(converter.makeHtml($('#post_content').val()))
$ ->
  $('#post_content').keyup ->
    $('.preview').empty().append(converter.makeHtml($('#post_content').val()))

消毒されていないことに注意してください!

于 2011-09-19T21:15:46.133 に答える
0

応答を JavaScript として実行する必要"script"があるデータ型として指定しました。次のように記述して、応答が正しいかどうかを確認します。

$.post('posts/preview', $('#post_content').val(), ((js) -> console.log js), "script")

"script"データ型のアプローチには、いくつかの重要な注意事項があります。jQuery.ajaxのドキュメントにあるように、「これにより、 POSTがリモート ドメイン リクエストの GET に変換されます。」これは同じドメインのリクエストであると想定していますが、覚えておく価値があります。

于 2011-09-18T17:14:41.827 に答える