Rails 3.1 живой предварительный просмотр - PullRequest
2 голосов
/ 18 сентября 2011

Я бы хотел иметь предварительный просмотр в реальном времени, подобный тому, что здесь на stackoverflow.Используя 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

но этоне работаетЕсть предложения?

Ответы [ 2 ]

3 голосов
/ 20 сентября 2011

Спасибо всем за ваши мудрые слова, в конце концов я сделал то, что вы, ребята, сказали, так как было намного мудрее разобрать предварительный просмотр на стороне клиента.Я переключился на анализатор 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()))

обратите внимание, что он не очищен!

0 голосов
/ 18 сентября 2011

Вы указали "script" в качестве типа данных, который должен заставить ответ работать как JavaScript.Проверьте правильность ответа, написав:

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

Существуют некоторые важные предостережения с подходом типа данных "script".Как говорят документы jQuery.ajax , «это превратит POST в GET для запросов удаленного домена».Я предполагаю, что это запрос того же домена, но это стоит иметь в виду.

...