在我的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的新手。
答案 0 :(得分:0)
你要做的是用JavaScript编写Ruby字符串,这显然是行不通的。
您可以简单地将这些链接放在json中。