2011-10-21 2 views
0

레일 3.1에서 템플릿을 만들기 위해 EJS 젬을 사용하려고합니다. 내가 application.js 내 템플릿레일 3.1의 EJS gem이 JavaScript 템플릿을 올바르게 컴파일하지 않습니다.

//= 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과 함께했던 경험입니다. 수동으로해야합니까? 내가 놓친 게 있니? 사전에

덕분에,

답변

0

흠, 흥미롭게도, 레일 - 백본 보석을 설치하지 않고 수동으로 응용 프로그램에 백본을 배치하는 것이 문제를 해결하는 것 같았다. 템플릿을 백본 디렉토리 구조로 옮겼습니다. 어쩌면 ejs 보석은 백본 보석에 대한 의존성을 가지고 있을지도 모른다. 또는 디렉터리 중첩 수준과 관련이 있습니까? 아니면 자산 파이프 라인에 디렉터리가 포함되는 방식입니까?

이 방법이 작동하는 이유는 확실하지 않지만 작동하지는 않습니다. 누구든지 설명을 해줄 수 있다면 감사하게 생각합니다.

2

'ejs'로 끝나지 않았기 때문에 스프로킷은 EJS를 통해 템플릿을 처리하지 않았습니다. 올바른 순서로 처리하려면 템플릿 파일에 ".jst.ejs"로 끝나는 확장자를 사용해야합니다.

관련 문제