1

通常どおり機能する Web UI を備えたシステムと、/receiver_api に API エンドポイントがあります。ユーザーは、Mailgun によって解析される電子メールを送信し、Mailgun はこのエンドポイントに POST を送信します。これらのパラメーターの値 (新しい投稿の作成、新しい返信の作成、サブスクリプションの追加、サブスクリプションの削除など) に応じて、実行したい可能性のある多くのアクションがあり、ハンドラーを作成するときは、実行しているように感じました。再び一種のルーティング!

そのため、POST パラメーターに基づいて、リクエストを送信するコントローラーを選択したいと考えています。現時点では、ApplicationController から継承する ReceiverApi#receiver コントローラー/メソッドに /receiver_api を送信しています。現在、ApplicationController から継承しない他の「偽の」コントローラーにリクエストを効果的にルーティングします (ある Rails コントローラーから別のコントローラーへのリダイレクトは機能しないため)。最終的には Rails コントローラーにルーティングして、before_filter やその他すべての魔法を使用できるようにしたいと考えています。

とにかく、頭に浮かぶ可能性の 1 つは、routes.rb のメソッドで、POST パラメーターにアクセスし、Rails コントローラー/メソッドを返す必要があります。2 つの質問:

  1. これは可能ですか?routes.rb の POST パラメータにアクセスできますか?

  2. これを行うより良い方法はありますか?私たちは、Rack のレベルを上げることを考えていました。おそらくいつかはそうするでしょうが、時間がかかる場合はドアから何かを取り出したいと考えています。

ありがとう!

4

1 に答える 1

1

パラメータに基づいてコントローラを選択することは良いことではありません。

より良い代替策は、コード(これらの偽のコントローラー内)をモデル内のメソッドにリファクタリングし、コントローラーからのパラメーターに基づいてモデルメソッドを呼び出すことです。

ルート.rbは初期化時に実行されるため、paramsにアクセスすることはできません。

本当にパラメータに基づいてコントローラを呼び出したい場合は、別のコントローラにリダイレクトすることでこれを行う方法があります。これはhttp://www.railsonwave.com/2008/10/25/how-to-call-a-controller-s-action-from-a-different-controller/ [不正なリンク]で説明されていますが、注意してくださいそれは非常にハックだと。

于 2012-08-17T07:42:46.440 に答える