1

私はコアラを使用して、Facebookから次のJSONオブジェクトを取得しています。

@friends = [{"name"=>"Jolie Chide", "gender"=>"female", "id"=>"4216323"},
            {"name"=>"Seth Spring", "gender"=>"male", "id"=>"3429277"}]

私がやりたいことは次のとおりです。

<% @friends.where(:gender == "female").order("@friends['name'] ASC").each do |friend| %>
  <%= friend['name'] %>
<% end %>

ご存知のように、これは機能しません。私は標準のRubyオブジェクトに慣れており、上記のJSONには慣れていません。上記を機能させる方法について誰かがアドバイスを持っているなら、それがJSONからデータを変換することを意味するとしても、それは素晴らしいことです。助けてくれてありがとう。

4

2 に答える 2

4

あなたが持っているのはJSONではなく、ArrayesHashです。これらはActiveRecordリレーションではなく組み込みのRubyコレクションであり、のようなメソッドがselectありsort_by、そこでやりたいことを実行できます。これらのクラスとそのメソッドは、ActiveRecordのものよりもRubyにとってはるかに基本的であり、どこでも使用されているため、これらのクラスとそのメソッドに精通している必要があります。

必要な操作は次のように表すことができます。

@friends.select {|hash| hash['gender'] == 'female'}.sort_by {|hash| hash['name']}
于 2012-04-09T21:41:35.897 に答える
0

これは、を取得しjson dataてインスタンス変数に割り当て、次を使用するための最良の方法です。

上昇

@graph = @abc.sort_by { |hash| hash['created_time'] }

また

graph = abc.sort_by { |hash| hash['created_time'] }

降順

@graph = @abc.sort_by { |hash| hash['created_time'] }.reverse!

また

graph = abc.sort_by { |hash| hash['created_time'] }.reverse!
于 2015-01-19T10:00:10.017 に答える