2016-10-25 5 views
0

내 응용 프로그램에는 여러 Chartkick/Highcharts 그래프가 포함 된 페이지가 있습니다. 너무 많은 그래프의 필요성을 막으려면, 입력 및 변경 내용에 응답 할 수 있도록하고 싶습니다. 내가 한 일은 폼 선택 필드를 설정하고 필드에서 선택된 레코드에 따라 열 그래프를 변경합니다. 나는 이것을하기 위해 jQuery를 사용하고있다.레일에 Chartkick 그래프의 일반 렌더링

내 질문에 대한 답변입니다. 내 js 파일에서 렌더링/html 문자열을 연결/보간하는 데 문제가 있습니다. 누구든지 이것을 할 수있는 좋은 방법을 알고 있습니까?

기존의 연결을 사용하려고했지만 문자열 내에서 javascript를 이스케이프 처리 했으므로 작동하지 않습니다. 사용자 ID를 하드 코딩하면 해당 사용자가 의도 한대로 모든 것이 업데이트되므로이 문제는 확실합니다. 여기

내가 내 JS 지금까지 무엇을 가지고 :

chart_render.js 모든 팁은 감사하겠습니다

var user_id; 
user_id = $('#user-select').val(); 
if (user_id !== "") { 
    $('#chart').html("<%= j render 'chart_render', locals: {user_id: --->This is where I need to place the user id<--- } %>"); 
} else { 
    $('#chart').html("<%= j render 'chart_render', locals: {user_id: nil} %>"); 
} 

!

편집 :

내가 Highcharts를 사용하는 대신 직접 Chartkick 통해 데이터 태그를 통해 선택한 사용자를 전달하여 다른 길을가는 끝났다.

+0

비슷한 질문 - http://stackoverflow.com/questions/4959770/how-to-pass-a-javascript-variable-into-a-erb-code-in-a-js-view –

답변

0

"++"을 사용하여 ID를 연결할 수 있습니다. 어떻게 수행했는지 확인하십시오.

var user_id; 
user_id = $('#user-select').val(); 
if (user_id !== "") { 
    $('#chart').html("<%= j render 'chart_render', locals: {user_id:" + user_id + "} %>"); 
} else { 
    $('#chart').html("<%= j render 'chart_render', locals: {user_id: nil} %>"); 
} 
+0

I 이 시도했다 그러나 'escape_javascript'에 대한 짧은 있기 때문에 'j'정확히 그 (이스케이프 javascript 않습니다), 나는 레일 코드 및 js 볼 때 이후 문자열 내부 변수에 액세스 할 필요가 없습니다. 그래서 이렇게하면 레일은 id가 "+ user_id +"인 사용자를 찾으려고 시도합니다. – Ozgar

관련 문제