我在rails中创建了一个博客,我决定使用Redcarpet在markdown中生成博客内容。问题是我无法渲染我的图像。
我尝试过以下markdown语法:
![test](/image.png)
我也尝试过使用html图片代码:
<img src="/image.png">
我甚至尝试过嵌入的Ruby图片代码:
<%= image_tag "image.png"%>
我的图片位于app / assets / images文件夹中。它与Redcarpet或我的路径名中的选项有关吗?使用我在网上找到的示例我使用了以下帮助方法
def markdown(text)
options = {
fenced_code_blocks: true,
no_intra_emphasis:true,
lax_html_blocks: true
}
extensions = {
autolink: true,
superscript: true,
disable_indented_code_blocks: true
}
renderer = Redcarpet::Render::HTML.new(options)
markdown = Redcarpet::Markdown.new(renderer, extensions)
markdown.render(text).html_safe
end
我的show.html.erb文件如下所示:
<div class="container-fluid">
<h3><%= @post.title %></h3>
<%=@post.created_at.to_date%>
<p>
<%= markdown(@post.text)%>
<p>
<br>
<%= link_to 'Back to all posts.', posts_path%>
</div>
答案 0 :(得分:2)
我能够找到解决方案。我花了很多时间尝试那些没有工作的教程,所以要小心。您最好的资源是Redcarpet文档和Paperclip文档。
基本上你需要使用paperclip gem创建一个指向图像的外部链接,并将其插入markdown形式,如下所示:
![my image](/system/images/images/000/000/004/original/1.png?1419796218)
过程如下:
在views / images / show.html.erb中:
<p> Normal image size url: <%=@image.image.url%> </p>
<p><%= image_tag @image.image.url %></p>
<p> Large image Size url: <%=@image.image.url(:large)%> </p>
<p><%= image_tag @image.image.url(:large) %></p>
上面的代码将显示如下内容:
Normal image size url: /system/images/images/000/000/004/original/1.png?1419796218
Large image size url: /system/images/images/000/000/003/medium/1.png?1419796195
将上面显示的链接复制并粘贴到markdown中,如下所示:
![my image](/system/images/images/000/000/004/original/1.png?1419796218)
答案 1 :(得分:0)
你见过how to extend redcarpet to support a media library part 2
他们说要添加图片即时标记你需要做![my avatar](http://lol.cat/1p)
并输出<img src="http://lol.cat/1p" alt="my avatar"/>
我希望这会有所帮助。