2012-01-23 2 views
7

3.1.3 응용 프로그램, 내 자바 스크립트 파일에 일부 ERB 코드를 삽입하려는 자산 파이프 라인에 대한 자바 스크립트 ERB 코드를 포함하기 있지만 어떤 이유로 구문 분석되지 않는 것 :내 레일에서

# app/assets/javascripts/application.js 
//= require_tree ./shared 

# app/assets/javascripts/shared/shared.js.erb 
MM.loading = '<img src="<%= asset_path("icons/ajax-loader.gif") >">'; 

렌더링 가져옵니다 /application.js이 같은 :

MM.loading = '<img src=" asset_path("icons/ajax-loader.gif") >">'; 

내가 레일 가이드에서 여분의 단계를 볼 수 없습니다 - 내가 부족 거기에 뭔가를? Btw 뷰 파일에 haml을 사용하고 .js.haml으로 위의 내용을 시도한 결과, #{...}에 포함되었습니다.

답변

10

코드에 구문 오류가 있습니다. 이 :

MM.loading = '<img src="<%= asset_path("icons/ajax-loader.gif") >">'; 

이이어야한다 : 당신은 코드의 도우미 블록에 대한 닫는 ERB 태그 누락 된

MM.loading = '<img src="<%= asset_path("icons/ajax-loader.gif") %>">'; 

. 레일 4에서

+0

아, 잘 발견 ... 그게 다야! – Zubin

+0

오, 잘 두 발을 데려갔습니다. –

-2

application.js에 .erb 확장자를 추가하면 제대로 작동합니다.

필수 파일의 내용이 먼저 포함 된 다음 매니페스트의 확장명에 따라 처리됩니다.

+0

좋은 생각,하지만 나를 위해 작동하지 않았다. filename을 명시하기 위해'.erb'를 추가 한 후에'shared.js.erb'에 console.log ("1 + 1 = <% = puts 1 + 1 %>");를 시도했습니다. – Zubin

+0

필수 사항은 아닙니다. 대괄호를 수정 한 후 매니페스트 파일 이름에 .erb를 추가하지 않고 작업했습니다. – Zubin

0

대신 js.erb보기를 사용하여, 나는 당신이 가능한 자산 파이프 라인에 충실하는 것이 좋습니다, 그리고 통과 곤 사용하여 JS에 변수를 또는 다른 기술에서 논의 : gon으로 Ruby on Rails - Send JavaScript variable from controller to external Javascript asset file

:

응용 프로그램/뷰/레이아웃/application.html.erb :

<head> 
    <meta charset="utf-8"/> 
    <%= include_gon %> 

응용 프로그램/컨트롤러/application_controller.rb :

before_filter { gon.path = asset_path('icons/ajax-loader.gif') } 

응용 프로그램/자산/자바 스크립트/shared.js.coffee :

MM.loading = '<img src="' + gon.path + '">'; 

파일은 시작시 한 번만 미리 컴파일되어 있기 때문에이 방법은 빠르고, 서버에서 대신 레일을 통해 제공하고,에 도착 나머지 J와 동일한 HTTP 요청

자바 스크립트에 대한 자산 URL을 전달하는 특정 사용 사례

은 요청되었습니다 URL of images in JavaScript code using Rails 3.1 asset pipeline?

관련 문제