2012-02-15 10 views
0

私はFacebookのグラフAPIにアクセスし、このようなJSONレスポンスを取得したい:JSONレスポンスの値をレールデータベースに保存する方法は?

{ 
    "data": [ 
    { 
     "name": "Coldplay", 
     "category": "Musician/band", 
     "id": "15253175252", 
     "created_time": "2012-01-27T22:51:44+0000" 
    }, 
    { 
     "name": "R.E.M.", 
     "category": "Musician/band", 
     "id": "8759772983", 
     "created_time": "2012-01-27T22:51:43+0000" 
    } 
    ], 
    "paging": { 
    "next": "https://graph.facebook.com/1000032123447/music?format=json&limit=5000&offset=5000&__after_id=8123918" 
    } 
} 

今、私は私のレールのデータベースに名前、カテゴリおよびIDを保存します。 私は同じ列のテーブルを持っています。

この応答をデータベースの一致する列に保存する最も簡単な方法は何ですか?または、より良い解決策、つまり、jsonオブジェクト全体をデータベースに保存し、後でコードで再度読み取ることは可能ですか?

時間がある場合は、javascript/jQuery(ajax maybe)とルビコードのコーディング例を提供してください。どうもありがとうございます!

答えて

3

JSONコンテンツをブラウザからRailsアプリケーションに送信する方法については、this question and answerを参照してください。

次に、このようなことができます(JSONは自動的に解析され、paramsハッシュとして利用可能です)。注目すべきは、JSONのid属性は無視されるということです。これはデフォルトで保護されているからです(Railsはレコードの主キーとしてidを使用します)。より良いfacebook_idのようなものに「に名前を変更する」:ブラウザで

を、あなたには、いくつかのエラーチェックを行うことになるでしょう。もちろん、

# POST /path/to/collection 
def create 
    params["data"].each do |data| 
    data["facebook_id"] = data["id"] 
    SomeRecordClass.create(data) 
    end 
end 

を応答を送信するなど、あなたはこのような何かを行うことができます、あなたが使用している場合jQuery

$.ajax({ 
    type: "POST", 
    url: "/path/to/collection", 
    data: data, // the JSON data, as an object or string 
    contentType: "application/json", 
    dataType: "json" 
}); 
+0

ありがとう!また、このメソッドを呼び出すためのjavascript、つまりAjaxを追加できますか? –

+2

@ SebastianOberste-Vorth最小限のJSを追加しました。私はあなたのためにあなたのすべての仕事をする傾向がないので、残りはあなた次第です – Flambino

関連する問題