我正在學習ROR(目前有5個多月),並且正試圖從Postgres數據庫中將數據導入到Highcharts。 Postgres表的列有:id,:name和:pc1 - 這是一年百分比變化 - (等等)。數據庫中有五個時間序列[:id]。在ROR中以JSON格式從Postgres獲取數據到Highcharts javascript
這裏的DB模式:
create_table "series", force: true do |t|
t.string "acronym"
t.string "name"
t.string "current"
t.string "previous"
t.string "pc1"
t.datetime "created_at"
t.datetime "updated_at"
end
下面是該系列控制器的一部分:
class SeriesController < ApplicationController
before_action :set_series, only: [:show, :edit, :update, :destroy]
# GET /series
# GET /series.json
def index
@series = Series.all
end
def percent
@series.each do |series|
series.name
series.pc1
end
render :json
end
我定義一個方法 - 「百分比」 - 因爲我要創建幾個不同的圖表,例如,一個用於每年百分比變化(這一個)以及先前與當前的變化。
下面是與Highcharts腳本的觀點:
更多或以下Highcharts'指令(這裏:http://www.highcharts.com/docs/working-with-data/preprocessing-data-from-a-database)少,我把‘數據’請求了Highcharts功能。原始的Highcharts演示代碼 - 使用嵌入式「硬編碼」數組 - 在這裏:http://www.highcharts.com/docs/getting-started/your-first-chart我假設我應該刪除系列,如果我在調用該函數之前將它聲明爲變量。我在示例中忽略了php,因爲我應該從控制器渲染json系列。
<div>
<script>
var chart = new Highcharts.Chart({
chart: {
renderTo: 'container'
},
series: [{
// I pulled local host out of here because Stackoverflow doesn't like it
var url = "";
$.getJSON(url, function(resp) {
options.series[0].name = name;
options.series[0].pc1 = pc1;
var chart = new Highcharts.Chart(options);
});
pointStart: 0,
pointInterval
}]
});
$(function() {
$('#container').highcharts({
chart: {
type: 'bar'
},
title: {
text: 'Fruit Consumption'
},
xAxis: {
categories: ['Apples', 'Bananas', 'Oranges']
},
yAxis: {
title: {
text: 'Fruit eaten'
}
},
});
});
</script>
</div>
這裏的模型:
class Series < ActiveRecord::Base
has_many :series
end
我想我有多個問題:
- 我是不是正確的控制器渲染JSON?
- 我應該在腳本還是文件中調用url(因爲我使用的是localhost服務器)?
- 我懷疑還有其他人,例如,百分比方法應該在控制器的before操作中嗎?
控制檯中的錯誤是這一行:var url =「http://localhost:3000/series」;我已經嘗試了許多變體,包括/ series和文件路徑。
我的環境已設置(使用Apple Mac和Mavericks)。我使用運行rails服務器的Terminal應用程序,Postgres運行在單獨的選項卡,Sublime Text版本2和Chrome中。
Afonso,謝謝你的幫助! 1.修改渲染格式正確地格式化數據並將其發送到系列#索引操作。 (我的路線是正確的。)輸出是一個數組。 2.要從Postgres數據庫中檢索數據,將它交給Highcharts並渲染圖表,請執行以下操作: – user3763682
1.修改渲染格式,正確格式化數據並將其發送到系列#索引操作。 (我的路線是正確的。)輸出是一個數組。 A.控制器不應該有一個渲染調用;相反 - 在我的情況 - 只是@series = Series.all; B,jQuery的Highcharts預處理需要放在app/assets /(controller name)/ javascript-file中。 C.Highcharts html進入你的視野。您還需要添加Highcharts的JavaScript文件(或將其放在部分內容中)。 我的錯誤是假設我需要控制器操作來檢索數據。 – user3763682