amcharts与RubyonRails的集成:使用数据库中的数据填充图形
amcharts integration with Ruby on Rails: Using data from the database to populate the graph
我是RoR的新手,我希望使用amcharts在我的Ruby on Rails应用程序中创建一个图形(我使用的是Rails-v 3.2.2和amcharts JavaScript Charts-v 2.6.5),以绘制数据库中的数据。Amcharts不再使用flash(现在他们只使用Javascript/HTML5),所以我找到的集成教程是针对旧版本的Amcharts的。
我的第一个问题是(高级理解问题)-我需要使用XML或.CSV文件将数据库中的数据加载到图表中,还是可以在javascript中使用嵌入式ruby?
我的第二个问题是,有人知道如何在RubyonRails中实现amchart图表的教程或示例代码吗?
例如:
如果我想要一个有国家和价值的饼图。示例数据库表:
create_table "countries", :force => true do |t|
t.string "name"
t.integer "litres"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
这是一张硬编码的图表。我可以使用嵌入式ruby使代码从数据库中提取数据而不是硬编码吗?还是我需要制作一个XML文件?如果您能深入了解如何将从数据库中提取的数据集成到amcharts javascript代码中,我们将不胜感激。
<script type="text/javascript">
var chart;
var legend;
var chartData = [{
country: "Lithuania",
value: 260
}, {
country: "Ireland",
value: 201
}, {
country: "Germany",
value: 65
}, {
country: "Australia",
value: 39
}, {
country: "UK",
value: 19
}, {
country: "Latvia",
value: 10
}];
AmCharts.ready(function () {
// PIE CHART
chart = new AmCharts.AmPieChart();
chart.dataProvider = chartData;
chart.titleField = "country";
chart.valueField = "value";
chart.outlineColor = "#FFFFFF";
chart.outlineAlpha = 0.8;
chart.outlineThickness = 2;
// this makes the chart 3D
chart.depth3D = 15;
chart.angle = 30;
// WRITE
chart.write("chartdiv");
});
</script>
您可以很容易地使用Ruby代码来提取数据,并在视图中输出必要的Javascript,尽管这对于构建来说可能很痛苦,尤其是对于复杂的数据结构。
我建议使用单独的JSON部分视图来使用JBuilder输出图形的数据。一旦建立了JSON响应,就可以在图形中输出它。
# controller
@data = Country.all
# partial "_data.json.erb"
<%=
Jbuilder.encode do |json|
json.countries @data do |json, country|
json.country country.name
json.value country.litres
end
end
%>
# view
var chartData = <%= render :partial => "data", :format => :json, :locals => @data %>
此外,我发现了一颗amchart宝石,可能会对你有所帮助,尽管它看起来已经3年多没有人碰过了https://github.com/ahobson/ambling
我个人建议使用Highcharts Highcahrts。它有一个完整的api文档,使您能够将数据加载到高图表中。下面是一个你可能正在寻找的饼图示例http://www.highcharts.com/demo/pie-basic.你可以试着做如下的事情:
控制器
def index
@title = "Country"
@country = Country.all
@data = []
Country.all.each do |country|
countryData = { :CountryName => country.country.to_s,
:values => [] }
['England', 'France', 'Italy', 'Spain','Germany'].each do |NameOfCountry|
end
@data.push(countryData) #Push this data back to the variable countryData.
end
结束
查看
如果你使用高图,你可能会有一些基本的东西,与此类似:
series: [{
type: 'pie',
name: 'Browser share',
data: [
['Firefox', 45.0],
['IE', 26.8],
然而,以上只是原始静态数据。利用我提供的一些东西,你很可能会做这样的事情:
name: '<%= data[ :CountryName] %>',
data: [<% data[ :values ].each do |value| %>
<%= value %>,
<% end %>]
你可以在这里解析CountryName的数据以及你输入的值。希望这能有所帮助。
在回答您的问题时,您不一定要使用XML或CSV数据。您通常会使用JSON或XML来加载数据。
下面是amCharts V3的Ruby包装器:http://rubygems.org/gems/amcharts.rb
- 在php和mysql中选择选项.一旦选择了选项,就列出我的sql数据库数据
- AJAX,用于显示数据库数据
- 如何在 JavaScript 函数中使用 MySQL 数据库数据
- JavaScript 中数据库数据的未终止字符串文字
- 内容可更改 来自数据库数据的下拉列表
- 访问数据库数据类型错误
- 使用 Phonegap 检索数据库数据
- 引导数据库数据切换在同时使用两个标签时不使用 href #home 选项卡
- 如何在 ASP.NET 中动态地将数据库数据添加到 Jquery 控件
- 在数据库数据更改时向所有活动会话发送响应
- 如何使用php在mysql数据库数据更改上自动发送SMS
- 是否可以使用客户端代码检索数据库数据
- 将数据库数据检索到JSON-移动登录表单
- PHP/MySQL-数据库数据的复选框,提交2个参数
- 动态表单字段和数据库数据检索
- 在原生脚本应用程序中显示sqlite数据库数据有问题
- 如何在 JavaScript 中访问从 Recordset 中检索到的数据库数据
- PHP脚本返回整个网页,而不是数据库数据
- 如何重写jQuery日历的删除,以便我也可以删除我的数据库数据
- 为amstockcharts使用数据库数据