3

私は最近Railsプロジェクトに苦労しており、基本的にプロジェクトのすべてのページに通常のナビゲーション(古いブラウザの場合)とレイアウトなしのAJAXの両方を介してアクセスできる必要があります。最近、これを ApplicationController の一番上に置くことで、問題の解決策を見つけました。

layout proc { request.xhr? ? false : "application" }

この行により、すべてのコントローラー アクションは、通常のアクセスではレイアウトを使用してレンダリングされ、AJAX 経由でアクセスされた場合はコントローラーなしでレンダリングされるはずですが、これは少し良すぎるように思えます。

私が忘れているこのアプローチのセキュリティまたはパフォーマンスの低下があるかどうか疑問に思っていましたか? それを行うより良い方法はありますか?あいまいで古いブラウザが偶然にレイアウトなしでレンダリングする可能性はありますか、またはその逆の可能性はありますか?

基本的に、私は何かを見落としていますか?これは危険でしょうか?

4

1 に答える 1

0

将来これを使用したい人のために、ビューが xhr でプルされる場合、Devise gem で問題が発生することを発見しました。何らかの理由で、Devise はフラッシュをフラッシュに入れるのではなく、レスポンスにダンプすることを好みます。デバイスのブラックボックスをクラックして開くことを意味するため、探しに行くのが面倒なメソッドの最後の行である可能性があります。

これは技術的にこの行によるものではありませんが、今後の参考のために注意してください。デバイス ビューを AJAX モーダルに配置しないか、そうする場合は注意してください。

于 2013-08-22T17:30:32.973 に答える