动态渲染存储在模型中的HTML

时间:2014-01-22 04:33:00

标签: javascript html ruby-on-rails haml

我想将一些Rails模型传递到视图中并渲染它们。

e.g。

在控制器中

@stories = Story.all

在视图中

$('.story-text').html("#{raw @stories[0].story_text}");

但HTML字符串包含"'。因此,HTML不完全包含在字符串中,并且Javascript无法运行。

e.g。它变成了

$('.story-text').html("<img src="/example.jpg" />");

导致错误。

我怎样才能做到这一点?我是否可以在Javascript中使用Python中的三重引号?

编辑 @stories[0].story_text

的示例
<p>This is some example text</p><img src="/example.jpg" />

它以text类型

存储在数据库中

2 个答案:

答案 0 :(得分:1)

而不是raw,使用escape_javascript来适当地转义字符串以嵌入javascript。它被别名j,所以这在你的Haml视图中:

$('.story-text').html("#{j @stories[0].story_text}");

导致生成此javascript:

$('.story-text').html("<p>This is some example text<\/p><img src=\"/example.jpg\" />");

答案 1 :(得分:0)

您正在寻找HTMLEntities