2013-09-03 6 views
1

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

Образец структуры компании Record

1.9.3p327 :073 > Company 
=> Company(id: integer, name: string, contact_no: integer, email_id: string, website: string, fax_no: integer, created_at: datetime, updated_at: datetime, divisions_count: integer) 

@all_companies = Company.all 

Карта Функция:

@all_companies = @all_companies.map {|each_company| { Country: each_company.name, Visits: each_company.divisions_count} } 

Формат вывода выше запроса

[{:country=>"Samsung", :visits=>8}, {:country=>"Natraj", :visits=>2}, {:country=>"Tupperware", :visits=>5}, {:country=>"Transcen", :visits=>0}, {:country=>"camlin", :visits=>0}]

Graph Data Input Format:

var chartData = [{ 
     country: "USA", 
     visits: 4025 
    }, { 
     country: "China", 
     visits: 1882 
    }, { 
     country: "Japan", 
     visits: 1809 
    }, { 
     country: "Germany", 
     visits: 1322 
    }] 

Я использую Ruby, 1.9.3-P327. Мне нужно преобразовать свой выходной массив в конкретный формат графика. , Я стараюсь идти о том же с помощью следующих шагов: -

1.9.3p327 :070 >  @all_companies = @all_companies.to_s.gsub(":","") 
=> "[{country=>\"Samsung\", visits=>8}, {country=>\"Natraj\", visits=>2}, {country=>\"Tupperware\", visits=>5}, {country=>\"Transcen\", visits=>0}, {country=>\"camlin\", visits=>0}]" 
1.9.3p327 :071 >  @all_companies = @all_companies.gsub("=>",": ") 
=> "[{country: \"Samsung\", visits: 8}, {country: \"Natraj\", visits: 2}, {country: \"Tupperware\", visits: 5}, {country: \"Transcen\", visits: 0}, {country: \"camlin\", visits: 0}]" 
1.9.3p327 :072 > puts @all_companies 
[{country: "Samsung", visits: 8}, {country: "Natraj", visits: 2}, {country: "Tupperware", visits: 5}, {country: "Transcen", visits: 0}, {country: "camlin", visits: 0}] 
=> nil 
1.9.3p327 :073 > 

Теперь, когда я пытаюсь отобразить данные в моем графике, я получаю ошибку ниже Синтаксис: -

var chartData = [{country: "Samsung", visits: 8}, {country: "Natraj", visits: 2}, {country: "Tupperware", visits: 5}, {country: "Transcen", visits: 0}, {country: "camlin", visits: 0}] 

Синтаксическая ошибка от консоли firebug теперь указывает на & в вышеуказанных данных.

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

Вопрос Обновленный

мне нужно данные в следующем формате: -

var chartData = [ 

     { 
      country: "Samsung", 
      visits: 8 
     }, 
     { 
      country: "Natraj", 
      visits: 2 
     }, 
     { 
      country: "Tupperware", 
      visits: 5 
     }, 
     { 
      country: "Transcen", 
      visits: 0 
     }, 
     { 
      country: "camlin", 
      visits: 0 
     } 

     ] 

Спасибо.

+0

Пожалуйста, добавьте правильный окончательный вывод. –

+0

d.danailov - Вопрос обновлен, теперь он показывает желаемый правильный конечный результат. – boddhisattva

+1

Могу ли я узнать, почему вопрос поставлен на второй план, и есть вопрос, чтобы закрыть этот вопрос? – boddhisattva

ответ

0

Я понял это благодаря этому question.

Это то, что я делаю, чтобы преодолеть ошибку синтаксиса .

В контроллере: -

def company_division_stats 
    @all_companies = @companies_data = Company.all 

    @specific_details = @all_companies = @all_companies.map {|each_company| { country: each_company.name, visits: each_company.divisions_count} } 
    #@all_companies = @all_companies.to_s.gsub(":","") 
    #@all_companies = @all_companies.gsub("=>",": ") 

    respond_to do |format| 
     unless @all_companies.nil? 
     format.html 
     format.json { render json: @specific_details, status: :created } #in the browser url would be:- localhost:3000/company_division_stats.json 
     end 
    end 

По мнению: -

var chartData = <%= @all_companies.to_json.html_safe %> 
1

Потому что вы не печатаете свое значение. Консоль только отображает ее, двойные кавычки экранированы.
В противном случае, как вы узнаете, где моя строка: «моя» строка «что» заканчивается?

Если вы просто сделать

puts @specific_details.to_s 

вы не увидите эти двойные кавычки убежали.

+0

oldergod - Я сейчас понимаю. Благодарю. Я обновил свой вопрос и заголовок вопроса. Пожалуйста, проверьте. – boddhisattva

+0

oldergod - +1 для указания, что обратная косая черта в '' [{страна: \ "Samsung \", посещения: 8}, {страна: \ "Natraj \", посещения: 2}, {страна: \ "Tupperware \ ", посещения: 5}, {country: \" Transcen \ ", посещения: 0}, {country: \" camlin \ ", посещения: 0}]" 'не нужно отдельно удалять. Спасибо. – boddhisattva

1

I need to convert my output array to the specific graph format.

ли это с помощью Awesome Print Rubygem -

require "awesome_print" 

hsh = [{:Country=>"Samsung", :Visits=>8}, {:Country=>"Natraj", :Visits=>2}, 
     {:Country=>"Tupperware", :Visits=>5}, {:Country=>"Transcen", :Visits=>0}, 
     {:Country=>"camlin", :Visits=>0}] 

ap hsh,{:index => false} 

выход

[ 
    { 
     :Country => "Samsung", 
     :Visits => 8 
    }, 
    { 
     :Country => "Natraj", 
     :Visits => 2 
    }, 
    { 
     :Country => "Tupperware", 
     :Visits => 5 
    }, 
    { 
     :Country => "Transcen", 
     :Visits => 0 
    }, 
    { 
     :Country => "camlin", 
     :Visits => 0 
    } 
] 
+0

Страна, визиты не должны быть в кавычках. – boddhisattva

+0

@boddhisattva видеть сейчас !! –

+0

babai - Спасибо за ваши предложения. Извините, благодаря oldergod я понял, что обратной косой черты больше нет, когда я делаю 'puts @ all_companies' с моей консоли. См. Мой обновленный заголовок вопроса и обновленный вопрос по текущей проблеме, с которой я столкнулся при получении входных данных для графика в соответствующем формате. Пожалуйста, приготовьтесь со мной за любые неудобства – boddhisattva