2011-02-03 12 views
1

私はウェブサイトを開発するためにレール上にルビーを使用しています。私は私のウェブサイトをオフラインで利用できるようにしたい。そのために私はWeb SQLデータベースを使用しています。オンラインとオフラインのデータベースをどのように同期できるかを知りたい。オフラインデータベースはjavascriptによって作成されます。 これは私が試した数少ないものです。Web SQLデータベースを同期する方法

<script type="text/javascript"> 

var js_obj = <%= @contacts.to_json %>; 

</script> 
以下のように私は、ビューファイルにJavaScriptでこのオブジェクトにアクセスしようとしています

@contacts = Contact.order("contacts.position ASC") 

を示したように、私は、コントローラでRubyのオブジェクトにデータを取っていたデータベースの内容を表示するには

これは正しい方法ですか?私はjs_obj変数

+0

FYI、W3CはWebSQLプロジェクトを中止しました。 http://www.w3.org/TR/webdatabase/#status-of-this-document – jemminger

答えて

0

でデータを表示することができますどのように多くのブラウザは、私がインラインスクリプトを憎む

0

(などIE9、クローム、)それを実装することになるので、私はdefinitley同様のIndexedDBのフォールバックを持っているでしょう。つまり、オフラインデータベースを使用する場合、.to_jsonを返すメソッドでコントローラにAjaxリクエストを送信することはできません。 javascript変数を使用するのではなく、非推奨のWeb SQLデータベースを使用していると仮定しているので、現在のところ、(そして奇妙なことに)オフラインdbのサポートされている標準が最も優れているため、スクリプトでこれを使用します進行中の作業を気にしてください)。これまでのところコードは機能しませんが、私はそのアイデアは健全だと思います。

http://jsfiddle.net/Nevraeka/hvT6u/5/

0

データベースに依存しない抽象化とJavaScriptのオブジェクト・データベースマッパであるpersistence.jsと呼ばれるプロジェクト(persistencejs.org)があります。これにより、アプリケーションをWebSQLデータベースに制限する必要はなく、たとえば、ローカルストレージの使用を(同じコードで)サポートすることもできます。

また、リモートデータベースとサーバーの同期をとるpersistence.syncというプラグインがあります。彼らは例のバックエンドを持っていますが、node.js用に書かれています。ただし、指示に従ってRails用に作成することもできます。 Railsのサーバー側は、thisのようなものでなければなりません。

あなたはこのライブラリを使用することを決定した場合も、あなたはドキュメント上に述べた制限をお読みください:

  • 同期ライブラリは、オブジェクトごとの細かさに同期します。それは
  • 解決する必要があることは矛盾が導入されてもよい、プロパティ単位での正確な変更を保持しないことは、多対多の関係
  • エラー処理が
  • 削除を実装されていない同期しないではありませんサポートされていますが、「削除済み」フラグを使用してこの問題を回避できます。
関連する問題