2

Rails では、これは現在 /charts_json/south_carolina.json からの応答として生成している API 応答です (たとえば)

[{"d_s":0,"name":"summerville"},{"d_s":1,"name":"hilton head island"},{"d_s":2,"name":"north myrtle beach"},{"d_s":1,"name":"spartanburg"},{"d_s":12,"name":"greenville, sc"},{"d_s":0,"name":"aiken"},{"d_s":6,"name":"columbia"},{"d_s":4,"name":"myrtle beach"},{"d_s":1,"name":"simpsonville"},{"d_s":1,"name":"lancaster, sc"},{"d_s":0,"name":"north augusta"},{"d_s":0,"name":"sumter"},{"d_s":0,"name":"rock hill"},{"d_s":1,"name":"beaufort, sc"},{"d_s":1,"name":"mount pleasant"},{"d_s":21,"name":"charleston"},{"d_s":1,"name":"clemson"},{"d_s":1,"name":"anderson, sc"}]

今、私がする必要があるのは、上記をこのように json ドキュメントとしてレンダリングすることです

[['0', 'summerville'], ['1', 'hilton head island'], ...etc... ]

SOコミュニティの利益と読者の明確化のために、この最後のことを処理した場合に、これを機能させるために使用するすべてのコードを含めます

charts_controller に加えて、json リクエストに応答するための charts_json_controller を生成しました。これは、そのコントローラーのコントローラー メソッドの例です (これは少し不格好ですが、機能があれば問題ありません)。

def south_carolina
    @locations = Location.find(1687).descendants #used acts_as_tree gem
    respond_to do |format|
      format.json { render json: @location.as_json(only: [:d_s, :name])}
end

ビュー(断面)で

function drawMarkersMap() {
    var data = google.visualization.arrayToDataTable([
      ['Startups', 'Location'],
      $.ajax({url: '/charts_json/south_carolina', dataType: 'json'})
  ]);
4

1 に答える 1

1

正しく理解しているかどうかはわかりませんが、jsonをハッシュではなく配列として取得する方法を次に示します。

ロケーションに対してこのメ​​ソッドを定義する

クラスの場所
  def self.as_json_array
    as_json(のみ:[:d_s、:name])。collect {| l | [l [:d_s]、l [:name]]}
  終わり
終わり

必要に応じてこれをより汎用的にすることもできますが、最初にあなたの要件を理解していることを確認したいと思います。

次に、レンダリング行でas_jsonの代わりにそのメソッドを使用します。

また、これを知っているように聞こえますが、実際には同じコントローラーを使用し、respond_toブロックにさまざまな形式のカスタムコードを配置する必要があります。

于 2012-09-07T00:55:11.770 に答える