いきさつ
某メディアの広告をJSで表示しているんですけど、そもそもPCには対応していないため、PCで見るとコンソールにずっとエラーが出ていた。
某メディア担当者曰く「仕様です(キリッ)」とのこと(笑)
本来ならVIEW側でやるべきじゃないのとは思うんですけど、エンジニアの手を煩わすのもアレなんで暫定処理として調べた。
キレッキレのRailsエンジニアさんからの苦情は受け付けませんので予めご容赦くださいw
作業内容
= render '*******/*******/*******_***'
問題のJSコードはパーシャルで読み込んでいる。
なので、そのパーシャルを呼び出しているコードに分岐処理を追加。
なんと!
request.env['HTTP_USER_AGENT']
または
request.user_agent
でアクセスしたUAがわかるらしい。ステキ!
僕の場合はPCの時はパーシャルを読み込ませたくない。
逆にいうとモバイルでは表示させたいとなる。
で、以下のコードになった。
- 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を使うように言われた(笑)
手順は簡単!
gem 'rack-user_agent'
#bundle install
あとはhamlの任意の箇所に取得できるデータを読み込むなりして使うだけ
僕の場合はスマートフォンからのアクセスならば処理を実行させたいので以下のようになった
- if request.from_smartphone?
処理