我正在尝试使用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
答案 0 :(得分:2)
Sprockets没有通过EJS处理您的模板,因为它没有以'ejs'结尾。您需要在模板文件中使用以“.jst.ejs”结尾的扩展名,以便按正确的顺序处理它们。
答案 1 :(得分:0)
嗯,
有趣的是,安装rails-backbone gem而不是手动在应用程序中放置主干,似乎解决了这个问题。我还将模板移动到骨干目录结构中。也许ejs gem对主干宝石有一些依赖(不太可能)?或者它与目录嵌套级别或资产管道包含目录的方式有关吗?
无论哪种方式,都不确定为什么这样可行,但它仍然有效。如果有人能提供解释,我会很感激。