5

Rails Web サイトを、従来の Rails の各ビューの往復アプリケーションから、最終的に単一ページの ember.js ベースのアプリケーションに徐々に移行しています。この移行の一環として、アプリ全体を一度に 1 つのページ アプリに移行するのではなく、最初はセクションごとに段階的に移行します。

私は、一般的に思われる 1 つの問題に困惑しています。JSON ビューと HTML ビューに同じコントローラーを使用している場合、Chrome で [戻る] を押すと、HTML ビューではなく JSON ビューが表示されることがあります。

たとえば、エンドポイント /portfolio/13 があります。これは、これらのセクションの ember.js アプリの 1 つへのエントリ ポイントであり、Ember Data が application/ と同じエンドポイントを介して #13 の ID を持つ Portfolio の JSON をプルします。 json を Accept: ヘッダーとして使用します。より深いページに移動した後に戻ると、HTML ではなくページの JSON 表現が取得されます。

JSON バージョンが別の URL にあるように、Ember Data に format パラメーターを強制的に使用させる必要がありますか? もしそうなら、どのようにそれを行うのですか?

私は何を間違っていますか?

4

2 に答える 2

3

これをJavascriptのどこかに追加してみてください。

$.ajaxSetup({cache: false});

問題が解決するはずです。ただし、デフォルトではブラウザはJSONをキャッシュしないため、ここで問題が発生します。おそらく、これは間違ったコンテンツタイプが原因です。つまり、RailsはJSONをHTMLとして提供しています。

于 2012-07-07T11:54:46.847 に答える
1

Railsアプリで「application/json」として設定されたヘッダーがありますか? ネットワーク応答ヘッダーをトレースして、content-type: 値を確認できますか?

"全体" ページが JSON として表示されていますか? (HTMLを解析しないことを意味します)

私はかつてsinatraを使用してこの問題を抱えていましたが、(非常に愚かな):

before do 
    content_type 'application/json'
end

ブラウザで正しく表示するには、すべての HTML ページを「text/html」にする必要があります。

Railsアプリのいくつかの場所で問題が発生する可能性があります。(しかし、なぜ ember の前にこの問題が発生しなかったのですか?)

于 2012-06-15T04:38:10.503 に答える