Ruby On Rails eyecatch

スマホやPC両方に対応したレスポンシブデザインが増えていますが、どうしてもスマホとPCで表示する画面を分けたい場合があると思います。
今回は、Gemを使わないでクライアントのデバイスを判定して表示するviewを振り分ける方法を説明します。

コントローラーの設定

コントローラーに、User Agentを判定するための関数を作成します。
before_actionに関数を指定して、アクション前に処理を追加します。

ビューの作成

先ほどのコントローラーでrequest.variantに指定した文字列を、ビューファイルに指定します。
例えば、上記のコントローラーの設定例では:mobileを指定しています。
index.html.erbというファイルの場合、以下のようにスマホ用のビューを作成しますs。

確認

スマートフォンとPCそれぞれでアクセスして、それぞれのビューファイルが表示されていれば正しく設定されています。

まとめ

Gemを使わずに、簡単にデバイスごとに表示するビューを振り分けることができました。
デバイスごとに表示するビューを振り分けたい場合は、ぜひ試してみてください。