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() を呼び出します。Rails で /your/url/marget POST メソッドのセッション情報を変更します。このオブジェクトに id プロパティがある場合、PUT メソッドも無効になります。

于 2012-09-08T08:35:38.270 に答える