7

Tôi muốn người dùng nhập văn bản Markdown vào vùng văn bản và khi họ đăng nó, tôi hiển thị html tương ứng. Tôi đọc mà Rails sử dụng để có một phương pháp markdown hay gọi tương tự như phương pháp, mà bạn chỉ có thể gọi về lĩnh vực đó trong file ERB:Sử dụng Markdown with Rails

<%= markdown(@post.content) %> 

Rõ ràng, Rails mất chức năng mà ra. Cách tốt nhất để có được chức năng đó một lần nữa là gì? Điều đó dường như giải quyết nhu cầu của tôi.

Trả lời

12

Tôi sẽ sử dụng Redcarpet để thực hiện chuyển đổi markdown-html. Ngoài ra, tôi sẽ chuyển chuyển đổi từ chế độ xem sang một số đối tượng khác. Bạn có thể sử dụng callbacks (before_save) hoặc sử dụng Observers.

Từ the docs:

markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, 
    :autolink => true, :space_after_headers => true) 

markdown.render("This is *bongos*, indeed.") 
#=> "<p>This is <em>bongos</em>, indeed</p>" 

Bạn có thể muốn lưu trữ các kết quả trong cột khác, nói @post.content_parsed để người dùng có thể thực hiện sau chỉnh sửa vào bài đăng, cộng với cách này bạn không cần phải thực hiện chuyển đổi theo mọi yêu cầu.

+1

Đâu là nơi tốt nhất để khởi tạo đối tượng Redcarpet :: Markdown trong ứng dụng Rails? –

+0

Tôi mở rộng câu trả lời. –

+1

Trang Redcarpet github đề xuất chỉ tạo ra 'Redcarpet :: Markdown' một lần và sau đó gọi' render' khi bạn cần. Làm cho tinh thần, nhưng nơi nào tôi nhanh chóng 'Redcarpet :: Markdown' chỉ một lần trong ứng dụng Rails của tôi? –