ruby-on-rails – 如何使用Redcarpet for Rails在Markdown中嵌入
发布时间:2020-12-17 02:47:13 所属栏目:百科 来源:网络整理
导读:我在Rails 4.1中使用 Redcarpet’s Markdown parser,这样员工就可以通过一些格式化来互相写消息.我希望他们能够嵌入youtube视频.也许是这样的: Hey,*check out* my video: [VMD-z2Xni8U](youtube) 那将输出: 嘿,看看我的视频: iframe width =“560”heigh
我在Rails 4.1中使用
Redcarpet’s Markdown parser,这样员工就可以通过一些格式化来互相写消息.我希望他们能够嵌入youtube视频.也许是这样的:
Hey,*check out* my video: [VMD-z2Xni8U](youtube) 那将输出: 嘿,看看我的视频:< iframe width =“560”height =“315”src =“// www.youtube.com/embed/VMD-z2Xni8U”frameborder =“0”allowfullscreen>< / iframe> 在Redcarpet的Markdown解析器中有没有办法做到这一点?我假设我必须编写某种自定义解析器?如果有办法,这样做的恰当方法是什么?有可能采用标准的Markdown方式吗? 解决方法
最简单的解决方案似乎如下.我在Markdown中使用http:// youtube / VMD-z2Xni8U来嵌入YouTube视频.然后我允许在Redcarpet中自动链接以自动链接.
# /lib/helpers/markdown_renderer_with_special_links.rb class MarkdownRendererWithSpecialLinks < Redcarpet::Render::HTML def autolink(link,link_type) case link_type when :url then url_link(link) when :email then email_link(link) end end def url_link(link) case link when /^http://youtube/ then youtube_link(link) else normal_link(link) end end def youtube_link(link) parameters_start = link.index('?') video_id = link[15..(parameters_start ? parameters_start-1 : -1)] "<iframe width="560" height="315" src="//www.youtube.com/embed/#{video_id}?rel=0" frameborder="0" allowfullscreen></iframe>" end def normal_link(link) "<a href="#{link}">#{link}</a>" end def email_link(email) "<a href="mailto:#{email}">#{email}</a>" end end 然后我创建一个markdown方法,在显示降价内容时在任何视图或控制器中使用: # /app/helpers/application_helper.rb module ApplicationHelper require './lib/helpers/markdown_renderer_with_special_links' def markdown(content) @markdown ||= Redcarpet::Markdown.new(MarkdownRendererWithSpecialLinks,autolink: true,space_after_headers: true,fenced_code_blocks: true) @markdown.render(content).html_safe end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |