2011-09-18 3 views
2

여기에 stackoverflow와 비슷한 실시간 미리보기를 갖고 싶습니다. Rails 3.1과 RedCloth를 사용하여 어떻게 작동하는지 이해할 수 없습니다.Rails 3.1 실시간 미리보기

나는 컨트롤러 preview.js.erb에서

def preview 
@content = params[:post_content] 

respond_to do |f| 
    f.js 
end 
end 

내부 기능을

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

(내 posts.js.coffee 내부) 이와 같은 내 자신의 Ajax 호출을 갖는 시도 나는 자원

0123을 추가

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

넣어

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

하지만 작동하지 않습니다. 제안 사항이 있으십니까?

+2

Ajax는 스택 오버플로와 같이 실시간 미리보기에 너무 많은 지연 시간이 있습니다. 당신이 원하는 것은 JavaScript 마크 다운 라이브러리입니다. http://stackoverflow.com/questions/134235/is-there-any-good-markdown-javascript-library-or-control (물론 ExecJS를 사용하여 동일한 markdown 라이브러리를 서버에서 실행할 수도 있습니다.) –

+1

나는이 질문이 관련이 있다고 믿는다 : http://stackoverflow.com/questions/5311247/rails-ajax-js-erb-rendered-as-text-not-js –

+0

미래에는 Guy 디버깅 정보를 포함하는 것이 좋습니다. * 왜 * 작동하지 않습니까? 또는 예상치 못한 일이 무엇입니까? – coreyward

답변

3

지혜로운 말을 해주신 모든 분들께 감사드립니다. 결국 저는 여러분이 말한대로했는데, 클라이언트 쪽에서 미리보기를 분석하는 것이 현명했습니다. 나는 마크 다운 파서 (서버 측) 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

헤이 녀석. 나는 너와 똑같이하려고 노력하고있어. 이 파서를 사용하는 것이 좋습니다! 예외적으로, converter.makeHtml (string)을 파일에 쓸 때 (예 : main_file.js) 나중에 작동하지 않는 다른 스크립트가 발생합니다. 이걸 언제 발견 했니? – jay

0

데이터 유형으로 "script"을 지정 했으므로 이어야합니다.은 JavaScript로 응답을 실행합니다. 응답이 서면에 의한 정확한지 확인하십시오 "script" 데이터 유형 접근 방식 몇 가지 중요한주의 사항이 있습니다

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

. jQuery.ajax 문서에서 "이것은 원격 도메인 요청을 위해 POST를 GET으로 변환합니다."라고 말합니다. 나는 이것이 동일한 도메인 요청이라고 가정하고 있지만, 명심할 가치가 있습니다.

관련 문제