2012-05-03 9 views
8

안녕하세요, 레일에서 현재 환경을 얻으려고했지만 저는 제 자바 스크립트로 뭔가 잘못하고 있다고 생각합니다.하지만 무엇을 알지 못합니다. 내 application.js에 ...레일즈 앱에서 javascript 파일로 환경을 얻는 방법

var rails_env = '<%= Rails.env -%>'; 
alert(rails_env); 
alert(rails_env.value); 
if(rails_env == 'development'){ 
    alert('inside if') 
    var indexName = "idx"; 
} 
else{ 
    alert('inside else') 
    var indexName = "idx_production"; 
} 

내가 개발 모드에 있어도 항상 내 else 문에 들어갑니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 당신에게 감사

에서 환경을 구축하는 방법 레일 응용 프로그램에서 자바 스크립트 파일

+2

'Rails.env' var iable이 스크립트에서 출력되고 있습니까? 확장자를 'application.js.erb'로 변경하여 첫 번째 경고에 – rjz

+0

흠이 있는지 확인하십시오. <% = Rails.env - %>. 내 2에 그 다음에 정의되지 않았습니다. application.js.erb로 바꾸면 뭐든지 망칠거야? 내 파이프 라인 좋아해? – david

+0

감사합니다! – david

답변

10

레일 '자산 파이프 라인 것이다 당신이 구문 분석 표시에만 전처리 자산. 이러한 자산이 CSS, JS 또는 다른 어떤 것으로 끝날지라도 파일 확장자를 조정하여 파싱 할 파일을 표시 할 수 있습니다.

이 경우 ERB 변수를 출력하려는 ​​경우 파일의 확장자를 application.js.erb으로 변경해야합니다.

전 처리기 here에 대한 확장 토론이 있습니다.

+0

도와 주셔서 감사합니다. – david

34

자바 스크립트 파일에 직접 전달하지 않아도됩니다. 당신은 예를 들어이 같은 erb보기 파일에 작업을 수행 할 수 있습니다

<script> 
    window._rails_env = "<%= Rails.env %>" 
</script> 

이상을이 :

<%= javascript_tag do %> 
    window._rails_env = "<%= Rails.env %>" 
<% end %> 

또는 최고 (IMHO)이 :

<body data-env="<%= Rails.env %>"> 
    ... 

후 :

var railsEnv = $('body').data('env') 
+0

아이디어에 감사드립니다! 아프다. =) – david

관련 문제