rails 3.1中的EJS gem不会正确编译JavaScript模板

时间:2011-10-21 15:54:52

标签: javascript ruby-on-rails-3.1 backbone.js ejs rails-3.1

我正在尝试使用EJS gem在rails 3.1中进行模板化。当我在application.js文件中需要我的模板时

//= require_directory ./templates

我在客户端获得的输出将模板包装在一个匿名函数中并命名它,但是......就是这样。这是我得到的生成输出。

(function() {
  this.JST || (this.JST = {});
  this.JST["templates/index"] = <article class="item <%=type%>">
    <% if (type === "stat") { %>
      <h2>
        <span>70%</span>
        of teens have one or more social network profiles
      </h2>
    <% } else { %>
      <header>
        <a href="/posts/<%=id%>">
          <h3><%=type%></h3>
          <h2><span>- <%=type%></span></h2>
        </a>
      </header>
      <% if (confidential) { %>
        <span class="confidential">Confidential</span>
      <% } %>
      <% if (type === "video" || type === "music") { %>
        <a href="/posts/<%=id%>" class="play">play</a>
      <% } %>
      <a href="/posts/<%=id%>"><img src="<%=image%>" alt="" /></a>
    <% } %>
  </article>;
}).call(this);

我希望将模板编译成字符串。这是我过去与Jammit的经历。我需要手动完成吗?我错过了什么吗?

提前致谢,

A

2 个答案:

答案 0 :(得分:2)

Sprockets没有通过EJS处理您的模板,因为它没有以'ejs'结尾。您需要在模板文件中使用以“.jst.ejs”结尾的扩展名,以便按正确的顺序处理它们。

答案 1 :(得分:0)

嗯,

有趣的是,安装rails-backbone gem而不是手动在应用程序中放置主干,似乎解决了这个问题。我还将模板移动到骨干目录结构中。也许ejs gem对主干宝石有一些依赖(不太可能)?或者它与目录嵌套级别或资产管道包含目录的方式有关吗?

无论哪种方式,都不确定为什么这样可行,但它仍然有效。如果有人能提供解释,我会很感激。