繁体   English   中英

将JavaScript从Rails控制器加载到javascript文件中的d3 .defer()函数

[英]load JSON from rails controller to d3 .defer() function within javascript file

我有一个使用D3制作带有城市的地球仪的Rails应用程序。 当前,城市的数据位于一个名为places.json的静态json文件中。 然后,通过此代码段将places.json文件呈现到资产/ javascript中的其余d3代码

 queue()
.defer(d3.json, "/assets/world-110m.json")
.defer(d3.json, "/assets/places.json")
.await(ready);

我想将控制器替换为“ /assets/places.json”文件,该控制器会重载动态json。 我目前正在使用控制器,并且有一个发布请求,可以将json获取到下面的javascripts文件中。

$.post( "/teams/to_geo_json", function( data ) {
   alert( JSON.stringify(data) );
});

/teams/to_geo_json是控制器的路径。 但是,当我将控制器路径放入.defer(d3.json, "/assets/places.json")它不起作用,我也不知道如何获取$.post("/teams/to_geo_json")...调用以使用d3.js其余代码。

事实证明,我在延期中遇到404错误。 在我的路线上,我有一个

   post "/teams/to_geo_json" => "teams#to_geo_json"

在控制台中,它要求从defer()获取get方法。 我将上面的路线更改为:get“ / teams / to_geo_json” =>“ teams#to_geo_json”

更改之后,我仍然遇到问题localhost:3000/teams/to_geo_json转到localhost:3000/teams/show/id ,它认为to_geo_json是它当然找不到的id。 所以它出错了。 为了解决这个问题,我把

 get "/teams/to_geo_json" => "teams#to_geo_json"

以上

resources :teams, :only => [:index, :show] do
   resources :users, :path => :teammates, :as => :teammates, :controller =>    "teammates"
 end

在我的routes.rb文件夹中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM