LoginSignup
2
1

More than 5 years have passed since last update.

iPhone系&Androidとそれ以外で分岐させる姑息技

Last updated at Posted at 2016-12-06

いきさつ

某メディアの広告をJSで表示しているんですけど、そもそもPCには対応していないため、PCで見るとコンソールにずっとエラーが出ていた。
某メディア担当者曰く「仕様です(キリッ)」とのこと(笑)

本来ならVIEW側でやるべきじゃないのとは思うんですけど、エンジニアの手を煩わすのもアレなんで暫定処理として調べた。

キレッキレのRailsエンジニアさんからの苦情は受け付けませんので予めご容赦くださいw

作業内容

hoge.haml
= render '*******/*******/*******_***'

問題のJSコードはパーシャルで読み込んでいる。
なので、そのパーシャルを呼び出しているコードに分岐処理を追加。

なんと!
request.env['HTTP_USER_AGENT']
または
request.user_agent
でアクセスしたUAがわかるらしい。ステキ!

僕の場合はPCの時はパーシャルを読み込ませたくない。
逆にいうとモバイルでは表示させたいとなる。
で、以下のコードになった。

hoge.haml
- userAgent = request.user_agent
- if(userAgent.include?('Mobile')||userAgent.include?('Android'))
  = render '*******/*******/*******_***'

userAgentに代入された文字列に「Mobile」や「Android」が含まれているものが対象になっているので、厳密には正しい分岐処理ではない。
なので姑息技ということ。
ただ、この条件であれば、iPhone、iPad、iPod touch、Androidを網羅できるので、その他の少数端末は無視してもOKって場合は使ってもよいかな〜ってF.E.E.さんはどうぞ〜w

追記2016/12/08

エンジニアさんに以下のgemを使うように言われた(笑)

rack-user_agent

手順は簡単!

Gemfile.
gem 'rack-user_agent'
console.
#bundle install

あとはhamlの任意の箇所に取得できるデータを読み込むなりして使うだけ

僕の場合はスマートフォンからのアクセスならば処理を実行させたいので以下のようになった

sample.haml
- if request.from_smartphone?
  処理
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1