image_tag未从数据库中的代码呈现

时间:2017-12-13 18:40:18

标签: html ruby image rendering

我已将html代码存储在数据库字段中,该字段将传递给rails app。

<%= raw @exercise.explanation %>

正常文字正确呈现,位于<p> .. </p>;但在那里只显示图像代码,因此页面上的输出为:

这是正确的渲染文字。

<%= image_tag ("exercises/picture.png"), style: 'height:auto; width:50%;' %>

进一步的文字。

当我在数据库条目中使用<img src="exercises/picture.png"><img src="picture.png">时,也没有加载图片,只是浏览器的损坏图像符号。

2 个答案:

答案 0 :(得分:0)

您是否拥有资产管道?如果这样做,可能会发生这种情况,因为它会在静态资产上生成哈希,以避免缓存问题。问题是image_tag助手解决了这个问题。这是一个权衡,但你可以禁用Assets Pipeline并查看它是否有效。为了保持这种状态并执行此操作,您需要一个更详细的解决方案。

您可以通过禁用资产摘要来尝试:

  

config.assets.digest = false

答案 1 :(得分:0)

或者,您可以ERB解释@exercise.explanation

<%= ERB.new(@exercise.explanation).result(binding) %>

这将花费您的@exercise.explanation并通过ERB处理,这似乎是您所希望的。

<强>买者

要非常小心你允许存储在这些&#34;模板&#34;如果您不能/无法清理此输入,那么事情可能会变坏。 ERB#result基本上是对eval的调用(这可能非常危险)