【问题标题】:image_tag not rendered from Code in Databaseimage_tag 未从数据库中的代码呈现
【发布时间】:2017-12-13 18:40:18
【问题描述】:

我已将 html 代码存储在传递给 rails 应用程序的数据库字段中。

<%= raw @exercise.explanation %>

正常文本被正确渲染,它在&lt;p&gt; .. &lt;/p&gt;;但里面的图像代码只是显示,所以页面上的输出是:

这是正确的渲染文本。

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

进一步的文字。

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

【问题讨论】:

  • 可能是图片源路径不正确。
  • 图像位于 app/assets/images/exercises 并且名称也是正确的。我在 images 文件夹中尝试了另一张图片,结果也相同
  • 尝试添加/images/exercises/picture.png?
  • 之前已经尝试过,没有做任何改变..这里的问题不是我认为的路径,而是 image_tag 没有呈现所以无论你在那里输入什么都不是显示并且我使用的是 raw 所以我不明白问题出在哪里

标签: html ruby image rendering


【解决方案1】:

你有资产管道吗?如果你这样做了,这可能是因为它生成的散列放在你的静态资产上以避免缓存问题。问题是 image_tag 助手解决了这个问题。这是一个权衡,但您可以禁用资产管道并查看它是否有效。要保持它并做到这一点,您将需要一个更详细的解决方案。

如果是这样,您可以通过禁用资产消化来尝试:

config.assets.digest = false

【讨论】:

    【解决方案2】:

    或者你可以让ERB解释@exercise.explanation

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

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

    警告

    要非常小心您允许存储在这些“模板”字段中的内容,因为如果您不/无法清理此输入,事情可能会变得很糟糕。 ERB#result 本质上是对eval 的调用(这可能非常危险)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 2017-04-09
      • 2015-10-19
      • 1970-01-01
      • 2013-12-24
      • 2021-01-01
      相关资源
      最近更新 更多