2015-02-11 20 views
0

我有一個rails應用程序,它使用d3生成一個帶有城市的地球儀。目前,城市的數據位於名爲places.json的靜態json文件中。該places.json文件則正在通過這個片段從rails控制器加載JSON到JavaScript文件中的d3 .defer()函數

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

我想用一個控制器rendors取代「/assets/places.json」文件呈現給資產/ JavaScript的內D3其餘代碼動態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代碼一起工作。

+0

定義 「不工作」。控制檯上的任何錯誤?如果你做'queue()。defer(d3.json,「/teams/to_geo_json").await(ready);函數就緒(錯誤,地方){console.log(錯誤); },有什麼錯誤? – Mark 2015-02-11 22:54:42

+0

哇,你剛剛幫我解決了我的問題! – user3266824 2015-02-11 23:22:59

回答

1

事實證明,我在推遲發生404錯誤。在我的路線中,我有一個

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

在控制檯,它要求從defer()獲取方法。我改變了路線上面這樣: 得到「/團隊/ to_geo_json」 =>「團隊#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文件夾

相關問題