链接到D3.js圈子中的Rails部分?

时间:2013-08-21 20:34:27

标签: javascript ruby-on-rails ruby d3.js

在我的Rails应用程序中,我有D3.js圈子,这些圈子是从我的Rails应用程序中的数据动态创建的。我想对圆圈进行超链接,因此当您点击一个圆圈时,它会加载与圆圈可视化的模型相关联的部分。

这是我的D3代码:

d3JSON = function(){
        d3.json("/folders/<%= @folder.id %>.json", function(error, data) {
            if (error) return console.warn(error);

            var folderChildren = [],
            circle;

            var svg = d3.select("body").selectAll("svg");

            circle = svg.selectAll("circle")
            .data(data.submissions, String);

            circle.enter().append("svg:a")
            .attr("xlink:href", function(d){
                return "http://localhost:3000/submissions/" + d.id;
            })
            .append("circle")
            .attr("cy", function(d) {return d.content.length * 5 + "px";})
            .attr("class", "floating")
            .attr("cx", function(d){
                return (d.content.length / 2) * 10 + "px";
            })
            .attr("r", function(d){ return (d.content.length / 2) * 1.2;});

            circle.exit().remove();

        });
    };

除了圆圈输入并且附加了a属性之外,一切都很有效。正如您所看到的,现在我将圆圈直接链接到与其关联的提交模型。我试过用这个:

circle.enter().append("svg:a")
            .attr("xlink:href", function(d){
                return "<%= link_to submission_path(" + d + "), remote: true %>";
            })

但是没有奏效。用“d.id”替换“d”也不起作用。有任何想法吗?我是D3的新手。

1 个答案:

答案 0 :(得分:0)

你要做的是用JavaScript编写Ruby字符串,这显然是行不通的。

您可以简单地将这些链接放在json中。