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