【问题标题】:Update Rails session with Backbone.js history navigate?使用 Backbone.js 历史导航更新 Rails 会话?
【发布时间】:2012-09-14 04:29:31
【问题描述】:

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

我的前端界面使用 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 }

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

【问题讨论】:

    标签: ruby-on-rails-3 backbone.js


    【解决方案1】:

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

    【讨论】:

    • 是的,按照这些思路玩弄它并让它工作。谢谢。
    【解决方案2】:

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

    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 方法。

    【讨论】:

      猜你喜欢
      • 2015-03-31
      • 2010-10-23
      • 1970-01-01
      • 2021-11-14
      • 2012-05-12
      • 2018-01-02
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      相关资源
      最近更新 更多