1

我在 Rails 的用户会话中存储了一个市场,通过session[:current_market]在我的application_controller.rb.

我的前端界面使用 Backbone.js,我有一个小的市场选择器小部件,它调用

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

...当用户选择市场时。这可行,但如果用户硬导航到另一个页面,市场将恢复为初始页面加载时设置的任何内容(最初session[:current_market]在 Rails 中加载的内容)。

当 Backbone.js 导航事件发生时,如何在会话中更新用户的市场?

我尝试通过触发静默 GET 手动执行此操作:

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

...但这似乎不起作用。

4

2 回答 2

1

我假设当用户切换市场时,将触发一些 ajax 请求以访问您的 rails api 并获取该市场的数据。您可以做的是使该路由的控制器操作将当前用户会话更新为请求的任何市场。

于 2012-09-13T20:29:31.223 回答
0

如何将此市场信息包装到新模型并用它处理更改?这只是一个伪代码示例。

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

将选定的市场设置为这个新模型,然后调用 save()。在您的 /your/url/marget POST 方法中,rails 更改会话信息。如果这个对象有 id 属性,那么也可以使用 PUT 方法。

于 2012-09-08T08:35:38.270 回答