【Sinatra】スマートフォンかどうか判定してviewを切り替える
以下の記事を参考に,Sinatraでsmartphoneからのアクセスかどうかを判定してviewを切り替えるような処理を書いてみました.
Ruby: Sinatra で UserAgent みて iOS / Android 判別 | snippets.feb19.jp
get '/' do ua = request.user_agent @sp = 0 @isAndroid = 0 @isIOS = 0 if ["Android"].find {|s| ua.include?(s) } @sp = 1 @isAndroid = 1 end if ["iPhone", "iPad", "iPod"].find {|s| ua.include?(s) } @sp = 1 @isIOS = 1 end if @sp == 1 erb :index-sp else erb :index end end
これでAndroidとiOS系のデバイスならちゃんと振り分けてくれます.
また同一viewでスマフォ用とPC用で別のスタイルシートを使いたい,というときにはhtml(slim)内で
# index.slim - if @sp == 1 link[rel="stylesheet" href="css/index-sp.css"] - else link[rel="stylesheet" href="css/index.css"]
のようにすればokですね.
chromeのスマフォシュミレータでもちゃんと動きました!便利!