3

Rails ミドルウェア スタックがあり、ActionDispatch の外部に MW の一部があります。理想的には、ActionDispatch を使用して内部の URL (通常の URL ルート経由ではアクセスできない) をトリガーしてページをレンダリングしたいと考えています。これは、Devise が「認証に失敗した」ページをレンダリングする方法と同様です。最善の方法は、アプリケーション内の特定のコントローラー アクションを名前でトリガーし、そのレンダリング結果を返すことです (ルートに含めずに)。

これを行うための標準的で現代的な方法は何ですか?

更新

def call(env)
  if user_from_env(env).free_accout?
    InterestingPagesController.action(:how_to_signup).call(env)
  else
    @app.call(env)
  end
end
4

1 に答える 1

1

controller.action を使用してコントローラー アクションを Rack エンドポイントとして返し、endpoint.call() または endpoint[] でエンドポイントを呼び出すことができます。

于 2015-06-13T14:47:00.127 に答える