2011-02-03 30 views
1

があった場合、ユーザはiPhone上で自分のサイトに到着したとき、私は2つのオプションのページでそれらを提示したい:追加クエリ文字列クエリ文字列

1)我々のアプリを取りに行きますまたは 2)要求されたURLに続けて

これは、アプリケーションコントローラのユーザーエージェントをチェックして表示することで行います。

オプション2が正しく表示されるようにするには、リンクで元のURLを保持し、クエリ文字列パラメータfullsite = 1を追加する必要があります。私は、アプリケーションコントローラのbefore_filterでそのクエリ文字列パラメータのparamを探して、ユーザーに再度表示されないようにCookieを設定します。

クエリ文字列パラメータをrequest.request_uriに追加する最もクリーンな方法は、そのリクエストURLにはクエリ文字列が含まれていてもいなくてもかまいません。リクエストがパラメータを持っているかどうかを確認するのは簡単ですが、自分自身で評価することなく、パラメータをきれいに追加するヘル​​パーがあるかどうかは不思議です。これを行うには正しい "荒れ狂う"方法を模索する。

答えて

2

恐らくこれを行う最も良い方法は、そのリンクを構築するために必要なその他の情報(既にbefore_filterでiPhoneを捕捉してレンダリングしていると仮定します)を作成するために必要なその他の情報を持つparamsハッシュにフラグを追加し、修正paramsハッシュからあなたのリンク:あなたのbefore_filterで

params[:fullsite] = 1 

そして、あなたのビューで:

<%= link_to('Continue to the Full Site', params) %> 

T彼のやり方では、Railsはクエリー文字列をエスケープして追加するという面倒な作業を行います。:fullsiteと元のクエリー文字列が含まれています。

  1. ではなく、セッションで:fulltextを設定します。

    あなたは自分のiPhoneのポータルを介して複数回iPhoneをリダイレクトを回避する方法として:fullsiteを使用している場合は、しかし、より良い仕事と、これらのアプローチのいずれかのように思えます、または

  2. ユーザーがiPhoneの場合のみリダイレクトし、request.refererはあなたのサイト以外のものです。

希望します。

+0

before_filterのparamsハッシュに追加することをお勧めします。私は選択肢がセッションよりも長い間ペリストになることを望んでいますが、提案されたアプローチも意味があります。ありがとう! – Nick

+0

@Nick Glad私は助けることができました! –