javascript - 从 Postgres 以 ROR 的 JSON 格式获取数据到 Highcharts javascript

标签 javascript ruby-on-rails json postgresql highcharts

我正在学习 ROR(目前 5 个多月)并尝试将 Postgres 数据库中的数据导入 Highcharts。 Postgres 表包含 :id、:name 和 :pc1 的列——这是一年的百分比变化——(以及其他列)。数据库中有五个时间序列[:id]。

这是数据库架构:

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

这是系列 Controller 的一部分:

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 脚本的 View :

或多或少按照 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,因为我应该从 Controller 以 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

我认为我有多个问题:

  1. 我是否在 Controller 中正确呈现 json?
  2. 我应该调用脚本中的 url 还是文件中的 url(因为我使用的是本地主机服务器)?
  3. 我怀疑还有其他方法,例如,percent 方法是否应该在 Controller 的 before action 中?

控制台中的错误是这一行:var url = "http://localhost:3000/series ";我尝试了多种变体,包括/series 和文件路径。

我的环境已设置(使用装有 Mavericks 的 Apple Mac)。我在运行 Rails 服务器、在单独的选项卡中运行 Postgres、Sublime Text 版本 2 和 Chrome 的情况下使用终端应用程序。

最佳答案

1。我是否在 Controller 中正确呈现 json?

我不这么认为。我也会发送一个状态,你需要告诉它是什么 json。 所以我想:

def percent
  @series.each do |series|
    series.name
    series.pc1
  end
  render status: 200, json: @series.as_json  
end

2。我应该在脚本或文件中调用 url(因为我使用的是本地主机服务器)?

一个网址,永远是一个网址。您将无法访问文件。你的网址似乎是正确的。

3。我怀疑还有其他方法,例如,percent 方法是否应该在 Controller 的 before action 中?

这取决于你在做什么。如果你想通过调用/seriesroute 来响应percent 方法生成的json,你需要在index 方法中调用percent。如果你想显式调用 /percent 你只需要将它添加到路由中就可以了。顺便说一句,您确实为此更改了路由文件,对吗? 你至少应该有一个 get 可用于系列 Controller ,或者如果你想要完整的 CRUD,应该有一个资源。 另外,我认为您应该遵守以单数形式使用模型名称的惯例,而您的 has_many: 系列对我来说没有意义。你想在那里实现什么目标? 如果一个系列 has_may 系列,那么你应该在模型中有一个 serie_id 并且还有一个属于。

希望这能以某种方式有所帮助。

关于javascript - 从 Postgres 以 ROR 的 JSON 格式获取数据到 Highcharts javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24346504/

相关文章:

ruby-on-rails - 如何正确复制 Octokit 请求对 webmock stub 的响应的响应主体

json - 在 JSON.NET 中反序列化 Jarray

javascript - HTML 图表与 MySQL 使用 Javascript PHP

javascript - 如何将计算器运算元素转换为字符串得到解,然后将解返回给元素?

javascript - 单击 Odoo 10 中的 TreeView 字段时如何执行某些操作?

javascript - $(this).css 选择器在 ie (7-8) 中不起作用(不是对象或 null)

asp.net - 适合 .Net 开发人员的优秀 Ruby on Rails 书籍

ruby-on-rails - 使用 Formtastic 从 radio 中进行选择并可选择创建新记录

java - 解析 JSON 时如何不使用嵌套的 try catch block ?

json - Node.JS/Express 在 JSON 中存储不同环境的数据库配置