私は最近、Rails アプリケーションの一部を別の Web サイトの iframe 内にロードする仕事を任されました。関連するページは別のレイアウト ファイルを使用する必要がありますが、iframe 内でレンダリングされている場合に限ります。ここで提案された解決策がありましたDetect iframe request in a rails app that includes a query string parameter.
たとえば、要求している Web サイトは、src の iframe を介してアプリケーションを呼び出すことができますhttp://foo.com/bar?iframe=true
。次に、コントローラーで次のことを簡単に確認できます。
def bar
render :template => "iframe" if params[:iframe]
end
これは良い解決策のように思えますが、残念ながら、元のクエリ文字列は完全に静的であるため、最初のリクエストでしか機能しません。iframe 内の他のルートへのアクセス可能なリンクがあると仮定すると、iframe=true
リクエスト パラメータを簡単に中継して、コードを繰り返さずに正しい iframe レイアウトを維持する方法はありますか? 基本的に、既存の機能を壊すことなく、可能な限り DRYest アプローチを採用したいと考えています。このパラメーターが存在する場合に中継するロジックを含む別の link_to ヘルパーを作成し、アプリケーション全体のすべての link_to 呼び出しを置き換えることを検討しました。しかし、誰かがより良いアプローチを持っているかどうか疑問に思っていました。