一般做行動裝置版的網頁有三種方法:
1. 直接做兩套系統,偵測到user是用行動裝置連上網頁時,自動轉址到行動裝置系統的url
2. 同一套系統,但提供不同的url和html,行動裝置登入時轉址到該url。
3. 同一套系統,但做兩套css,使用者用行動裝置進入時,套用行動裝置版的css
這篇文章針對RoR架構,討論第二種方法的實做方式。
一、
設計行動版網頁url時,在網域前加上「m」(mobile)算是很常見的習慣,例如m.facebook.com
但使用免費的平台,例如heroku,不太可能這樣做
所以這邊設定的網址是在主網址後加上m,例如ptttranspost.heroku.com/m
假設user用電腦登入時的頁面,對應的controller是「home」,那我們就在app/views/home下新增"m.html.erb"。
接著,請到config/routes.rb 新增路徑
match 'm' => 'home#m'
二、
編輯app/controllers/home_controller.rb
class HomeController < ApplicationController layout 'application', :except =>"m" #avoid applying layout config to m.html.erb def index platform=request.env["HTTP_USER_AGENT"] #get user agent to check users' platform if /android/i =~ platform or /iPhone/i =~ platform #if users' platforms are phones, redirect it redirect_to m_path end end def m end end第二行的用意是防止layouts/application.html.erb 裡的設定干擾行動版網頁
假如也要將layouts的設定套用到行動版網頁,則不用加上這行,甚至也不用做第一步驟和新增一個「m」action,因為上述兩動作都是為了避免m.html.erb被layouts影響而做。 不考慮會被layouts影響的話,第六行直接「render "m.html.erb"」即可
ps.應該也可以針對行動版網頁設計layouts,不過我用不到,所以還沒研究
要這樣用的話,可以參考這個語法:
layout false, :only => :your_action_name
三、
編輯m.html.erb,將其編輯成想要的版型
剩下的就依此類推!
研究了好一陣子,希望能幫上忙
沒有留言:
張貼留言