Неопределенная локальная переменная или метод "parsedData" при использовании JSON для анализа данных из таблиц Googlesheets в FusionCharts в приложении Ruby on Rails - PullRequest
0 голосов
/ 11 мая 2018

Я загружаю данные из Googlesheets в fusioncharts в моем приложении rails.

Я использую Jquery, чтобы выбрать данные из листов Google, как видно из этого урока https://www.sitepoint.com/interactive-javascript-charts-using-data-from-google-sheets/

Rails всегда выдает мне эту ошибку undefined local variable or method 'parsedData' for #<GreetingsController:0x007fdb862e9cf8>, когда я пытаюсь извлечь данные из переменной pasedData следующим образом.

data: parsedData

Я не уверен в том, что яя делаю что-то не так, это первый раз, когда я использую JSON для загрузки данных в fusioncharts в приложении rails.Любая помощь будет высоко ценится

вот фрагмент Jquery, в котором листы Google превращаются в JSON.

var spreadsheetId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  url = "https://spreadsheets.google.com/feeds/list/" +
  spreadsheetId +
  "/od6/public/basic?alt=json";

$.get({
  url: url,
  success: function(response) {
    var data = response.feed.entry,
      len = data.length,
      i = 0,
      parsedData = [];

    for (i = 0; i < len; i++) {
      parsedData.push({
        label: data[i].title.$t,
        value: data[i].content.$t.replace('income: ', '')
      });
    }

  }
});

Вот фрагмент кода fusionchart из контроллера rails

     @chart2 = Fusioncharts::Chart.new({    

     type: 'bar2d',
      renderAt: 'chart-container',
      width: '100%',
      height: '300',
      dataFormat: 'json',
      dataSource: {
        chart: {
         caption: "Highest Paid Actors",
         yAxisName: "Annual Income (in milion USD)",
         numberPrefix: "$",
         theme: "fint",
        exportEnabled: "1",
        },

           data: parsedData 
    }
})

а вот инструкция по рельсам и сварочным диаграммам https://github.com/fusioncharts/rails-wrapper

1 Ответ

0 голосов
/ 14 мая 2018

Кажется, вас смутили возможности, которые предлагает fusioncharts/rails-wrapper gem.

Если вы посмотрите на исходные файлы этого гема (метод render ), он позволяет вам создать объект Ruby, который представляет вашу диаграмму, а затем использует javascript для визуализации шаблона с графиком.

Таким образом, я вижу здесь 2 варианта.

Первый вариант - продолжить учебник:

Создайте элемент с указанным id, который будет содержать ваш график:

<div id="chart-container">
  <p>The chart will render here!</p>
</div>

Визуализируйте ваши данные, как только вы их получите, используя js:

var spreadsheetId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  url = "https://spreadsheets.google.com/feeds/list/" +
  spreadsheetId +
  "/od6/public/basic?alt=json";

$.get({
  url: url,
  success: function(response) {
    var data = response.feed.entry,
      len = data.length,
      i = 0,
      parsedData = [];

    for (i = 0; i < len; i++) {
      parsedData.push({
        label: data[i].title.$t,
        value: data[i].content.$t.replace('income: ', '')
      });
    }

    new FusionCharts({
      type: 'bar2d',
      renderAt: 'chart-container',
      width: '100%',
      height: '300',
      dataFormat: 'json',
      dataSource: {
        "chart": {
          "caption": "Highest Paid Actors",
          "yAxisName": "Annual Income (in milion USD)",
          "numberPrefix": "$"
        },
        "data": parsedData
      }
    }).render();
  }
});

При таком подходе вы извлекаете данные с помощью jQuery и анализируете их в указанном контейнере, избегая бэкэнда.

Другой вариант - извлечь данные из бэкэнда, например, используя HTTParty gem. А затем визуализируйте диаграмму с помощью интерфейса Ruby, предоставленного fusioncharts-rails gem.

Но поскольку вы реализовали большую часть функциональных возможностей с помощью интерфейсных инструментов, почему бы не придерживаться этого.

...