Ruby on rails:使用html和rails代码转换文本

时间:2016-02-26 21:18:08

标签: html ruby ruby-on-rails-4

我的应用中的文章包含字段“body”,其中包含带有html的文本。例如:

<div class ='skill_pic'>
  <img src = "/assets/images/picture_1.png">
</div>

在视图中,我将字段“body”称为:

<%= raw @article.body %> 

在本地计算机上一切正常,但是当我在生产中部署我的应用程序时,图像显示不正确,浏览器控制台返回404错误。

文章正文中的

image_tag可以解决我的问题,我的意思是:

<div class ='skill_pic'>
  <%= image_tag('images/picture_1.png') %>
</div>

但是helper raw无法使用html和rails方法转换文本

现在,我认为有三个方向:

  1. 为生产中的图像找到正确的路径
  2. 找到一些助手,可以使用html和rails code
  3. 直接转换文本
  4. 找到另一种解决方案

2 个答案:

答案 0 :(得分:0)

您可以在数据库中存储erb这样的部分内容:

<div class ='skill_pic'>
  <%= image_tag('images/picture_1.png') %>
</div>

在视图中使用ERB渲染它们:

<%= raw ERB.new(@article.body).result(binding) %>

答案 1 :(得分:0)

我想你想做某种迷你CMS。小心不要让用户填写数据库中的数据。你得到了非常糟糕的安全问题。如果用户可以编辑你的html,你最好使用某种模板引擎,如Liquid或markdown。

话虽如此,您应该不要将资产管道用于参考图像。将图像放在public文件夹而不是assets文件夹中。公共文件夹将像网络根目录一样可用,因此没有“公共”文件夹。在网址中。