2016-10-25 10 views
0

私のアプリケーションでは、複数のChartkick/Highchartsグラフを含むページがあります。あまりにも多くのグラフを必要としないように、私は後で入力と変更の内容に反応させたいと思っています。私が行ったことは、フォーム選択フィールドを設定し、フィールドで選択されているレコードに応じて列グラフを変更することです。私はこれを行うためにjQueryを使用しています。Railkでの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} %>"); 
} 

任意のヒントをいただければ幸いです!

EDIT:

私が代わりに直接ChartkickてHighchartsを使用してデータタグによって選択されたユーザーを渡すことによって、異なる道を行くことになりました。

+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をエスケープして)実行するので、文字列内の変数にはアクセスできません。だから私がこれをすると、レールはidが "+ user_id +"のユーザを見つけようとします – Ozgar

関連する問題