0

ビューにロードされた他のデータに基づいていくつかの視覚化を行う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() という関数でラップしてから、一番下で呼び出しています。それはうまくいかないようです。これを行う方法に関するアドバイスはありますか?

4

0 に答える 0