2011-08-01 1 views
1

나는 간단한 gmaps V3 API 호출을 사용하여 위치 레코드의 위도/경도를 기반으로 정적 인지도를 만듭니다.스프로킷이 js 파일에서 제대로 처리되지 않음

var location; 
function initialize() { 
    var myOptions = { 
    zoom: 10, 
    mapTypeId: google.maps.MapTypeId.HYBRID 
    }; 
    var map = new google.maps.Map(document.getElementById("location_static_map"), myOptions); 
    var lat = <%= "#{@location.latitude}" %>; 
    var lon = <%= "#{@location.longitude}" %>; 
    location = lat,lon; 
    map.setCenter(location); 
    var marker = new google.maps.Marker({ 
    position: location, 
    map: map, 
    visible: true, 
    draggable: false, 
    title: "Your Location is Here..." 
    }); 
} 

i가 포함 된 ERB 코드에 구문 구문 분석 오류를 얻고있다 : 파일 자산/자바 스크립트의 디렉토리에 reisdes, 그리고 이름 location_static_map.erb.js

여기에 코드입니다. 참고 이것은 내가 잘 작동하는 V3 API를 상대로 내장 된 다른 동적지도를 가지고 있기 때문에 def가 임베디드 erb 평가와 관련된 문제입니다 .... 또한 파일 이름 확장자를 .js.erb로 가정했습니다. 처리 순서가 잘못되었지만 erb 코드의 첫 번째 줄에 맞으면서 '위도'에 대해 정의되지 않은 메서드 오류가 발생했습니다 ....

또한 생성 된 application.js에서 구문 분석 오류가 발생합니다. 파일

모든 입력이 감사 ..... 그것은 당신이 생산이 코드를 공개 할 때 하나의 application.js 파일로 JS 자산을 모두 '컴파일'것을 나의 이해

답변

4

합니다 - ERB 의지 비 그 당시 평가되었고 결코 다시는. 개발 중에는 모든 요청에 ​​application.js가 컴파일되므로 문제가되지 않습니다. 코드를 살펴보면 각 요청마다 @location 값이 변경되기를 원한다고 가정 할 때 현재 접근 방식은 작동하지 않을 것입니다.

까지받는 오류는 스프로킷 구문 분석 오류 또는 클라이언트 측 자바 스크립트 오류입니까? js.erb가 처리 될 때 @location을 추측하는 것은 nil입니까?

이 코드를 재사용 가능한 javascriopt 함수/오브젝트에 랩핑 한 다음 클라이언트 측 코드를 호출 할 때 뷰에서 인스턴스 변수를 설정 하시겠습니까? 그 전화는 뷰 자체에서이 코드이

<script> 
window.App.Locator.initialize('<%= @location.latitude %>', '<%= @location.longitude %>'); 
</script> 

과 같을 수는 ERB는

+0

아도 생산, 각 요청에 다시 평가 될 것입니다, 당신이 그것을 못을 박았다 생각합니다. 그걸 위해 나 자신을 걷어차 야합니다. 물론 코드가 준수됩니다. 이런! – p2w