在下划线模板中使用< %%有什么用?

时间:2012-12-23 19:28:55

标签: ruby-on-rails templates backbone.js underscore.js

可以告诉我“< %%”“<%”

之间的区别
<%%= hello %>

<%= hello %>

我在谷歌搜索中找不到合适的答案。

任何解释都会有所帮助:)

**Index.html**

<div id="container">Loading...</div>
<script type="script/template" id="hello_sen">
<%= hello %>
</script>

**Backbone View**

class Bckbone.Views.EntriesIndex extends Backbone.View

initialize: ->
    @template = _.template($("#hello_sen").html())

render: ->
    datas = {hello: "Senthil"}
    $(@el).html(@template(datas))
    this

3 个答案:

答案 0 :(得分:1)

您在上面发布的屏幕截图中收到错误,因为您在erb文件中使用了erb样式下划线模板(默认设置)。

<%%>中的代码被解析为Ruby代码。

您应该使用备用插值字符串,如here所述。

答案 1 :(得分:0)

Backbone.js依赖于underscore.js进行模板化。 &lt;%是下划线中的约定。 &lt; %%转义了rails的ERB标记。您可以更改下划线的设置:

 _.templateSettings = {
    interpolate: /\{\{\=(.+?)\}\}/g,
    evaluate: /\{\{(.+?)\}\}/g
};

或者使用&lt; %%逐行转义。转义仍以%&gt;

结尾

更多信息:Rails with Underscore.js Templates

答案 2 :(得分:0)

我的首选解决方案:将模板移动到部分,并且不要在文件名中包含.html之后的.erb。然后rails不会解析该文件中的ERB。