Rails, помещая переменные Ruby в Javascript для Календаря Google - PullRequest
0 голосов
/ 22 февраля 2012

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

// Create the data table.
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Name');
    data.addColumn('number', 'Velocity');
    data.addRows([
      ['Gary', 9],
      ['Hannes', 11],
      ['Sandra', 5],
      ['Rob', 3],

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

%table.gap
  - test = sprint.work_by_developer
  %tr
    - test.each do |data|
      %td.column.developer_name
        = data.name
        \:
      %td.type_of_work
        Features:
        %span.indicator_color
          #{data.features} points
        %br/
        Chores: 
        %span.indicator_color
          = data.chores
        %br/
        bugs:
        %span.indicator_color
          = data.bugs

возможно ли зациклить javascript сделать что-то вроде этого:

......
      [data.name, data.features],
      ])

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

круто, заранее спасибо.это было бы действительно крутой функцией.

Ответы [ 2 ]

1 голос
/ 13 июля 2014

Теперь есть драгоценный камень для удобной передачи вашей переменной для просмотра javascript: gon. https://github.com/gazay/gon

1 голос
/ 22 февраля 2012

Что вам в основном нужно сделать, так это выполнить строковые манипуляции (обычно на основе шаблонов), чтобы сделать вывод ruby ​​действительным исходным файлом JavaScript, который будет отправлен клиенту и обработан с помощью Google Charts.

Испускаемый вами Javascript должен быть обработан Ruby, чтобы он работал.

Если вы используете Ruby on Rails, есть отличный способ сделать это с помощью ключевого слова respond_to, гдеВы можете указать разные выходные данные для разных форматов (json / xml / html / js).

Если вы используете Rails, вы можете просто определить метод действия следующим образом:

class HomeController < ApplicationController
  def Show
    @data = [["harry", 10], ["sue", 19]]

    respond_to do |format|
      format.js
    end
  end
end

Youзатем внутри app / views / home должен быть файл с именем show.js.erb, который выглядит следующим образом:

 var data = new google.visualization.DataTable();
    data.addColumn('string', 'Name');
    data.addColumn('number', 'Velocity');
    <% @data.each do |d| %>
    data.addRow(['<%= @d[0] %>', <%= @d[1] %>]);
    <% end %>

Затем вы переходите к тому моменту, когда вам нужны эти данные, вы просто вставляете свой <script>тег, указывающий на это действие home / show.js:

<script type="text/javascript" src="/home/show.js" />

После этого будет выполнено действие home # show ( в новом запросе ), и данные будут возвращены ввашей страницы.

ИЛИ :

Вы можете просто вывести тег в вашем представлении с данными, заполненными из текущего запроса, так же, как и с любымдругие вещи (я просто не могу сказать, как вы это делаете в HAML)

...