1

以下のマップ関数から返されたハッシュの配列があります。以下に示す特定の形式でデータを取得するグラフ( AMチャートを使用しています)のデータを入力しようとしています-

会社レコードのサンプル構造

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}]

グラフデータ入力フォーマット:

  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
      }

      ]

ありがとうございました。

4

3 に答える 3

1

あなたの価値を印刷していないからです。コンソールはそれを表示するだけで、二重引用符はエスケープされています。
それ以外の場合、どのようにして my string: "my "string" what" が終了するかを知ることができますか?

あなたがするだけなら

puts @specific_details.to_s

これらの二重引用符がエスケープされていることはありません。

于 2013-09-03T04:42:09.713 に答える
1

出力配列を特定のグラフ形式に変換する必要があります。

Awesome PrintRubygemを使用してこれを行います-

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
    }
]
于 2013-09-03T04:43:21.610 に答える
0

この質問のおかげでわかりました。

これは、 " 構文エラーを克服するために私が行っていることです。

コントローラーで:-

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 %>
于 2013-09-03T07:19:02.567 に答える