2012-08-27 23 views
1

我有一個市場存儲在Rails的用戶會話中,通過我的application_controller.rb中的session[:current_market]設置。更新Rails會話與Backbone.js歷史導航?

我有我的前端界面與Backbone.js的服務,我有一點點的市場選擇控件調用

BackboneApp.data.currentMarket = market.toJSON() 
Backbone.history.navigate market.homeUrl(), trigger: true 

...當用戶選擇一個市場。這個工作除了如果一個用戶很難導航到另一個頁面,市場會回覆到它在初始頁面加載時設置的任何內容(不管是最初在Rails中加載的session[:current_market]

如何在會話中更新用戶市場當Backbone.js的導航事件發生

我試圖通過手動觸發無聲GET這樣做:?

$.get '/api/v1/reset_current_market', { market_id: market.toJSON().id } 

...但是,這似乎並沒有工作

回答

1

我認爲當用戶切換市場時,會觸發一些ajax請求來觸發您的rails api並獲取該市場的數據。你可以做的是讓控制器爲該路線採取行動,將當前用戶會話更新爲所要求的任何市場。

+0

是的,沿着這些線路玩了這個,並得到它的工作。謝謝。 – neezer

0

怎麼樣包裝這個市場信息給新莫德爾和處理變化呢?這只是一個僞代碼檢查。

var marketModel = Backbone.Model.extend({ 
     urlRoot:"/you/url/market", 
     defaults:{ 
      marker: "" 
     }, 
     initialize:function() { 
     } 
    }); 
BackboneApp.data.currentMarket = new marketModel(market.toJSON()) 

將所選市場設置爲該新型號,並調用save()。 在rails會更改您的/ your/url/marget POST方法的會話信息。如果這個對象有id屬性,那麼也有PUT方法。