0

在我的 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 的新手。

4

1 回答 1

0

您正在尝试用 JavaScript 字符串编写 Ruby,这显然行不通。

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

于 2013-08-22T03:57:41.813 回答