2011-02-03 87 views
1

我在軌道上使用ruby開發網站。我希望我的網站可以離線使用。爲此,我正在使用Web SQL數據庫。我想知道我可以如何同步在線和離線數據庫。離線數據庫是由javascript創建的。 這些是我嘗試過的幾件事。 要顯示我正在採取的數據轉換成一個紅寶石對象在控制器的數據庫的內容,如圖如何同步網絡sql數據庫

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

我試圖在視圖文件JavaScript來訪問該對象如下所示

<script type="text/javascript"> 

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

</script> 

這是正確的方法嗎?我怎麼能在js_obj可變

+0

僅供參考,W3C已經放棄了的WebSQL項目。 http://www.w3.org/TR/webdatabase/#status-of-this-document – jemminger 2011-02-15 03:19:04

回答

0

查看數據我會definitley有IndexedDB的回退,以及因爲更多的瀏覽器會實現它(IE9,Chrome瀏覽器等)

0

我恨內嵌腳本。這就是說,在使用脫機數據庫的情況下,使用返回.to_json的方法向控制器發送ajax請求本身並不可行。而不是使用JavaScript變量,並假設您使用已棄用的Web SQL數據庫,因爲它們當前(並且奇怪)是脫機數據庫的最佳支持標準,所以我會在腳本中使用類似的內容(請原諒我可憐的SQL並保留介意它正在進行中的工作)。到目前爲止,代碼無法正常工作,但我認爲這個想法很有用。

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

0

有一個項目稱爲persistence.js(persistencejs.org),它是一個javascript對象的數據庫映射器具有獨立於數據庫的抽象。這樣,您不必將應用程序限制爲WebSQL數據庫,例如,您也可以支持(使用相同的代碼)使用本地存儲。

他們也有一個名爲persistence.sync插件,同步與服務器的一個遠程數據庫。他們有一個示例後端,但是是爲node.js編寫的。但是,您可以按照他們的說明爲Rails製作一個。 Rails服務器端應該是this

另外,如果你決定使用這個庫,你應該閱讀的文檔中提到的侷限性:

  • 同步庫同步在每個對象的粒度。不保持精確的變化在每個屬性的基礎上,因此衝突可以導入的需要解決的問題
  • 它不同步多到許多關係
  • 錯誤處理不落實
  • 刪除不支持,但也許你可以解決使用問題上「刪除」標誌