2009-08-07 4 views
1

필자는 헬퍼에서 정의한 지역 주민을 통해 수정하고 싶은 내 시각에 자바 스크립트 부분을 가지고 있습니다.어떻게 Ruby 코드를 자바 스크립트로 렌더링 할 수 있습니까?

<script type="text/javascript"> 
var store = new Ext.data.JsonStore({ 
    url: '/admin/administration/users/grid_data.json', 
    root: 'users', 
    fields: [ 
    <%- for field in fields do -%> 
     {name: '<%= field[:data_index] -%>'}, 
    <%- end -%> 
    ] 
}); 
</script> 

이것은 작동하지 않습니다. 도와주세요.

답변

1

문제는 쉼표가 뒤에 오는 문제입니다. 필드 배열의 길이를 확인해야하며 마지막 요소 인 경우 모든 이름 매개 변수의 끝에 현재있는 쉼표를 포함하지 마십시오.

0

첫 번째 것은 페이지 소스에서 생성 된 코드를 살펴 보는 것입니다. 구문 오류가 있습니까? HTML의 머리 부분 어딘가에 Ext 라이브러리가 포함되어 있습니까?

<%= (fields.collect {|field| "{name: #{field[:data_index]}}"}).join(',') %> 
0

. 코드의 for 루프는 배열의 끝에 ,이라는 꼬리표를 남깁니다. 유효한 자바 스크립트 구문이 아닙니다. 자바 스크립트로 루비에서 데이터를 이동하는 가장 쉬운 방법은 to_json 거의 항상 :

<% javascript_tag do %> 
var store = new Ext.data.JsonStore({ 
    url: '/admin/administration/users/grid_data.json', 
    root: 'users', 
    fields: <%= fields.collect{|f| { :name => f[:data_index] } }.to_json %> 
}); 
<% end %> 

그리고 당신은 루비와 자바 스크립트에서 동일한 해시 키를 사용하는 경우는 .collect{|f| { :name => f[:data_index] } }을 남길 수 있습니다. 훨씬 좋고, 버그가 적습니다.

행운을 빈다.

4

이 스크립트는 엄격한 자바 스크립트 파서의의 becuase IE에서 작동하지 않습니다에 대해 어떻게

관련 문제