【问题标题】:How to save image for blog post in Rails?如何在 Rails 中保存博客文章的图像?
【发布时间】:2015-02-14 16:36:17
【问题描述】:

我正在 Rails 中构建一个博客,并想在帖子中添加图片。

我基本上是将 HTML 写入文本区域并将其保存到数据库中。然后我在我的显示页面上打印带有@post.content 的帖子内容。

通常情况下,您可以使用<%= image_tag 'mypic.jpg %> 来渲染动态图像的url,但是由于它在数据库中保存为字符串,因此在这种情况下不起作用。

如何将我的图片标签保存在数据库中?

cms 或博客引擎和像CKeditor 这样的编辑器如何处理这个问题?

【问题讨论】:

标签: ruby-on-rails content-management-system blogs refinerycms


【解决方案1】:

默认情况下,rails 将转义字符串中的 HTML 标记。要以 HTML 格式打印帖子内容字符串,可以使用 raw() 方法。您也可以使用html_safe。 Raw 通常是首选,因为如果传递给它的值为 nil,它不会引发异常。

<%= raw @post.content %><%= @post.content.html_safe %>

请记住,您应该只对您知道不受跨站点脚本 XXS 攻击的字符串使用这些方法。如果您的网站正在接受用户输入,这可能是一个安全漏洞。

CKEditor 与 Carrierwave 或 Dragonfly 等文件上传 gem 配合使用。使用 img 上传实现 CKEditor 需要一个新的数据库表,当通过文本编辑器上传时,它将在您的服务器上保存图像。图像的路径保存在 <img> 标记中的 Post 字符串中。 CKEditor 还生成一组路由来处理上传图像的路径。

【讨论】:

  • 它不起作用,因为现在 ` 被打印而不是显示图像
  • 对,嵌入的 ruby​​ 代码在字符串中时将被打印,即使使用 html_safe 或 raw 也是如此。您必须使用标准的 html img 标签才能显示您的图片。从头开始构建需要为您的图像使用另一个模型,然后您必须将它们的路径映射到 Post 内容中的每个 img 标签。或者您可以使用 CKEditor gem 为您执行此操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 1970-01-01
相关资源
最近更新 更多