ビューにロードされた他のデータに基づいていくつかの視覚化を行うRails JSパーシャルがあります。ただし、JavaScript はページの読み込み時に実行されるため、パーシャルが挿入されたときに JavaScript を実行する方法がわかりません。
パーシャルは、フォルダー モデルの表示アクションで実行されます。次のようになります。
$("body").append( "<%=j render :partial => 'contents', :locals => {:folder => @folder } %>" );
$("#jscripts").append("<%=j render :partial => 'show', formats: :js, :locals => {:folder => @folder} %>");
<script>
2 行目は、application.html.erb のタグの間に、JS の残りの部分と共に JS の部分を追加します。私の _show.js.erb パーシャルは次のようになります。
d3Code = function(){
d3.json("/folders/<%= @folder.id %>.json"), function(error, data) {
if (error) return console.warn(error);
var svg = d3.select("svg"),
folderChildren = [],
circle;
var submissions = data.submissions;
for(submission in submissions) {
var submissionWords = submission.content.split(' ').join('');
var size = submissionWords.length;
folderChildren.push(size);
};
circle = svg.selectAll("circle")
.data(folderChildren)
.enter().append("circle")
.attr("cy", 90)
.attr("cx", String)
.attr("r", Math.sqrt);
circle.exit().remove();
};
};
d3Code();
ご覧のとおり、d3Code() という関数でラップしてから、一番下で呼び出しています。それはうまくいかないようです。これを行う方法に関するアドバイスはありますか?