2011-09-15 4 views
1

私の質問は非常にシンプルです。複雑なウェブリクエストが頻繁に発生するのは、通常、リクエストパラメータに関してかなりの情報があります。多くの場合、これらのパラメータのいくつかは、コントローラのアクションが、たとえreferrer_id(サードパーティのウェブサイト上のリンクをクリックしたリクエストか、メールニュースレター。初心者:リクエストパラメータに基づいてレスポンスデータを修正する適切な場所ですか?

もう一つの例:Quoraの上では、次のURLを入力した場合: http://www.quora.com/As-a-mobile-apps-developer-on-what-platform-should-I-choose-to-develop-and-why あなたが同じURLを入力する場合は、しかし、(snids = 24082824)パラメータを使用して、しかし、通常のウェブページに導かれるだろうし最終的には、ページのコンテンツといくつかの追加のオーバーレイするコンテンツを追加します(この場合、最後に質問を編集した人に関する情報)

すべてのリクエストの存在と価値をチェックするのは馬鹿だと思いますコントローラのアクションのパラメータ。そうすれば、if-else if-elseスープでアクションが実行されます。

フィルタは、リクエストのさまざまな要素をすべて破棄して切り離す方がはるかに優れているようですね。フィルタを使用すると、コントローラーの操作を壊したり乱したりすることなく、わずか数秒でワークフローを完全に変更できます。コントローラのアクションはリクエストのURLパターンに基づいてビューを取得するためですが、リクエスト/レスポンスを変更したり、傍受、ログを変更したり、コントローラのアクションをオーバーライドするフィルタの義務があります。リクエスト?

答えて

1

はいフィルタは適切な方法です。

2

ほんの少しのことですが、私はフィルタを使ってリクエストとレスポンスを変更しません。それらのオブジェクトがフィルタで利用可能であることを前提として可能です。フィルターを使用して、操作をきめ細かくする、またはアプリケーションに固有のアクセス制御を実施することは、すばらしいと思います。しかし、リクエストとレスポンスの変更については、カスタムRackミドルウェアが好きです。すべてのレールアプリはラックアプリです。

+0

これは、私のRailsでの経験が終わったところです。私は完全なnoobですので、私はRackについてもっと研究しなければならないと思います。ありがとう、それを指摘してください。 – user802232

+0

ユーザーが新規であるか、ログインしていないかに応じてリダイレクトするなどの場合は、フィルタは問題ありませんが、重大なリクエストのマングリングでは、ラックミドルウェアを使用することをお勧めします。フィルタ上のいくつかのものを確認してください。http://rails.nuvvo.com/lesson/6373-action-controller-filters – sunkencity

+0

私は、ユーザ(つまりアプリケーションロジック)を中心とするほとんどの事柄に対して、ラックミドルウェアはあまりにも低レベルであり、ソリューション複雑すぎる。しかし、他のもののためにそれは良いです。私はそれを使用して、異なるドメイン名に対して異なるコンテンツを動的に提供します。ここに参考文献http://asciicasts.com/episodes/151-rack-middleware – sunkencity

関連する問題