12

在中@post.content,我想要

1.simple_format,所以内容会有不同的行,而不是在没有中断的单行中

2.html_safe,因此用户可以粘贴一些<embed>视频链接,如 youtubes

可以<%= simple_format @post.content %>单独<%= @post.content.html_safe %>使用

但是当我一起使用它们时:<%= simple_format @post.content.html_safe %>html_safe 不起作用,因此<embed>视频不显示

你能告诉我如何同时启用<embed>代码simple_format吗?还是有其他解决方案来显示@post.content?谢谢!!!

4

2 回答 2

17

我会告诉simple_format不要清理我的内容:

simple_format(@post.content, {}, :sanitize => false)
于 2013-04-23T12:04:42.457 回答
1

我正在研究类似的问题。

我正在尝试在我的博客文章中发布代码片段。它工作得很好,但是 <> 里面的任何东西都会被去掉。无论是我显示还是更复杂的东西,<> 中的任何东西都会消失。我已经运行了 <%= simple_format(@article.content), {}, sanitize: false 代码,我几乎得到了我想要的。

问题是我的块中的代码实际上改变了我的页面布局。:)。

我最终选择了 Redcarpet 作为我的答案。

这很简单。

将 gem 'redcarpet' 添加到 Gemfile 并重新启动 Rails 服务器。

在 application_helper.rb 中放入以下代码:

def markdown(content)
  @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, space_after_headers: true, fenced_code_blocks: true)
  @markdown.render(content)
end    

此处的选项在文档中进行了描述。但是,fenced_code_blocks: true 允许您按照描述将代码放入块中。

这将在此处输出您键入的任何内容,并且可以与您的嵌入一起使用。

然后,要在您的情况下呈现它,只需输入:

降价(@post.content).html_safe

去应该不错。您还可以选择缩进四个空格,如此处插入代码。不过,做围栏似乎更容易。

于 2013-05-09T18:21:26.777 回答