0

我正在尝试使用 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 的体验。我需要手动执行吗?我错过了什么吗?

提前致谢,

一个

4

2 回答 2

2

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

于 2012-08-01T04:30:23.973 回答
0

唔,

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

无论哪种方式,不知道为什么这是有效的,但它仍然有效。如果有人可以提供解释,我将不胜感激。

于 2011-10-24T09:02:29.800 回答