【发布时间】:2013-01-10 09:33:25
【问题描述】:
好的,我有这个下划线模板(简化版),从 _template.html.erb 渲染,在我的 Rails 应用程序中,在页面的某个位置:
<script type="text/html" id="mytemplate">
<div class="foo">
<img src="{{= my_variable }}" />
</div>
</script>
然后我在需要时在其他地方渲染它:
// change it to mustache-style because of defaults clashing with erb
_.templateSettings = {
interpolate: /\{\{\=(.+?)\}\}/g,
evaluate: /\{\{(.+?)\}\}/g
};
options = {
my_variable: '/foo/bar/baz.img'
}
compiled = _.template($("#mytemplate").html());
$(compiled(options)).appendTo("#wherever");
从理论上讲,这应该可以正常工作,并且确实可以,除非像这样的错误开始在服务器日志和其他地方弹出,浏览器 404-ing 在 URL 上,例如:http://example.com/{{=%20my_variable%20}} 或 http://example.com/foo/{{=%20my_variable%20}}。
现在,我的 预感 是它与它是一个 img 标记这一事实有关,并且浏览器以某种方式尝试从页面中 GET 它,即使它被包裹在script 标签,但我不知道到底为什么。这是许多人推荐的将下划线模板嵌入 HTML 的方法之一。而且我也不能将其归因于较旧的浏览器和/或机器人,因为服务器日志显示这些是使用最新 Chrome 等的真实用户。
编辑:经过更多调查,1. 只发生在少数人(唯一 IP)2. 他们都使用最新版本的 Chrome。所以也许这是一个失控的扩展?
有什么想法吗?
【问题讨论】:
-
尝试将
type="text/html"更改为不存在的type="x-template"(或其他任何东西) -
@SimonBoudrias 不,不是这样。我已经将它从
text/template更改为text/html,希望能解决它,现在更改为x-template,它仍然每天发生几次。 -
嘿@KTamas,我用 2 种可能的解决方法在下面编辑了我的答案
标签: javascript html ruby-on-rails underscore.js