2012-05-02 2 views
7

Ruby on Rails 2.3.14 애플리케이션에 선 그래프를 표시하는 웹 페이지를 만들려고합니다. Javascript를 사용하여 멋진 그래프를 만들 수있는 JS Charts라는 도구를 발견했지만 필요한 데이터를 보내는 데 문제가 있습니다. 여기에 정적 선 그래프 만들 수있는 방법입니다라인 그래프를 만들기 위해 Ruby 배열을 Javascript로 전달하는 방법

<script type="text/javascript"> 
    var myData = new Array([1, 395], [2, 244], [3, 223], [4, 210], [5, 238], [6, 223], [7, 275], [8, 31]); 
    var myChart = new JSChart('chartcontainer', 'line'); 
    myChart.setDataArray(myData); 
    myChart.draw(); 
</script> 

내가 stats.html.erb에 그 코드를 넣어, 그것은 표시됩니다. 그러나 필자가 제공 한 선 그래프 데이터를 표시해야합니다. 로 2 차원 배열은 상기 제어기에서 생성된다

>> @a 
=> [[1, 395], [2, 244], [3, 223], [4, 210], [5, 238], [6, 223], [7, 275], [8, 31]] 

I 뷰에 해당 변수를 사용할 수와 같은과, 그것에 var myData 설정한다 : I가 다른 것을 시도

var myData = "<%= @a %>"; 

like :

var myData = JSON.parse("<%= @a.to_json %>"); 

하지만 아무 것도 작동하지 않는 것 같습니다. 내가 할 수 있는게 있습니까?

EDIT :

비어 제어기 뷰에 전달 어레이 (@a)에 문제가 있었다. 나는 다음을 사용할 수 있었다 :

var myData = JSON.parse("<%= @a.to_json %>"); 

오른쪽 데이터가보기로 전달되는 라인 그래프를 표시했다.

+0

좋은 질문. .erb 파일에 있다고 가정하고 루비 보간이 작동한다고 가정 할 때 왜 예제가 작동하지 않는 지 잘 모르겠습니다. 어쩌면 문자열로 보간을 시도할까요? IE는 '<%= @.to_s %>'입니다. 자바 스크립트가 루비가 스크립트에 무엇을 입력했는지 평가할 것이기 때문에 ... – Andrew

+0

@eric 결과 페이지의 생성 된 HTML을 붙여 넣습니다. – Abid

+0

잠깐, 어떻게 든 이번에는 효과가있었습니다. 컨트롤러가 뷰에 전달한 데이터에 문제가 있다고 생각합니다 ('@ a'). JSON.parse ("<% = @ a.to_json %>");'를 사용했습니다. 나는 적어도 응답을 평가한다. – Eric

답변

8

당신이 그것을 작동있어처럼의 보일하지만 당신은 약간의 물건을 정리할 수 있습니다 :

<%= javascript_tag do %> 
    window.myData = <%=raw @a.to_json %>; 
<% end %> 

또는 레일 3

당신은 슈퍼 HTML5의 Savy은 할 수 있습니다 및 일부의 AT & T로 데이터를 추가 할 data 헬퍼를 사용 HTML 태그 (jQuery로) 자바 스크립트에서 다음에 다음

<%= content_tag "div", id: "myDiv", data: {stuff: @a} do %> 
<!-- some html stuff...--> 
<% end %> 

하고 :

var myData = $('#myDiv').data("stuff") 

과 슈퍼 예리한 사람을 위해 체크 아웃 this railscast

관련 문제