2011-09-22 2 views
22

이 아닌에 자산 패키저로 jammit이있는 레일즈 2.3 앱에서 템플릿 용으로 underscore.js 템플릿을 사용하려고했습니다.Underscore.js 템플릿이있는 레일

<script type="text/template" id="q-template"> 
    <div class="current-body"> 
     <span class="q-index"><%= title %></span> 
     <span class-"q-text"><%= body %></span> 
    </div> 
</script> 

레일이 ERB의 변수를 구문 분석을 시도하고하면 ArgumentError 예외 :

다음은 간단한 템플릿입니다. 이 경우에 밑줄 템플릿을 레일과 함께 잘 연주하려면 어떻게해야합니까? 내가 어디로 잘못 가고 있니?

답변

52

대신 <%= %>의 다른 구분 기호를 사용합니다. 예를 들어, 콧수염 스타일 브래킷 {{= }} (보간)와 {{ }} (평가)를 사용하여 자바 스크립트에이 곳을 추가

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

덕분에,이 작동합니다. 나는 _.template 거기 언급 _.templateSettings에 대한 문서를 통과했지만, 어떻게 든 내가 프로젝트를 설정할 때 내 마음을 생략하고, 이것은 관련 jammit 수 있습니다 생각 유지했다. – papdel

+3

감사 참고 : http://documentcloud.github.com/underscore/#template 및 http://stackoverflow.com/questions/5771742/underscore-js-templates-within-jsp – Francois

+6

사용'{{}}'와' {{=}}'템플릿에서'if (x) {}'스타일 블록을 사용하고 싶다면 문제가 발생할 수 있습니다. 그것은'[%의 %]'와'사용하는 경우에 아마 쉽게 [% = %는]'대신 : 글로벌 필요로하지 않는 또 다른 옵션은 대체 –

25

을 당신이 당신의 전체 프로젝트를 통해 템플릿 설정을 변경하지 않으려면 .. . ERB 탈출

태그 : <%=는 닫는 태그가 STI 것을 <%%=

<script type="text/template" id="q-template"> 
    <div class="current-body"> 
     <span class="q-index"><%%= title %></span> 
     <span class-"q-text"><%%= body %></span> 
    </div> 
</script> 

참고가된다 l %>, %%>이 아님.


사이드 노트 - 나는 또한 heredoc을 사용하여 출력을 시도했다. 다음 코드는 성공적으로 실행되지만 heredoc 명령 사이에 잡히는 erb 소스 코드를 출력합니다.

<script type="text/template" id="q-template"> 
<%= <<-heredoc %> 
    <div class="current-body"> 
     <span class="q-index"><%%= title %></span> 
     <span class-"q-text"><%%= body %></span> 
    </div> 
heredoc 
</script> 
관련 문제