移动化我的Blog
感觉移动化这个词好别扭啊,我用这个词的意思是让我的Blog更适合用手机等移动设备阅读,用你的Android手机或iPhone访问看一下吧。
要将一个Rails程序mobilize是很简单的,我们开始吧
Controller需要一个before_filter
把下面的代码作为before_filter加入到一个合适的Controller中,合适的标准是什么呢?我也不太清楚了,或许你可以加在ApplicationController中
def detect_browser if params[:format].blank? unless session.has_key? 'mobile' agent = request.headers["HTTP_USER_AGENT"].downcase session[:mobile] = agent.match(MOBILE_BROWSERS) ? 'true' : 'false' end params[:format] = 'mobile' if 'true' == session[:mobile] elsif 'mobile' == params[:format] session[:mobile] = 'true' elsif 'html' == params[:format] session[:mobile] = 'false' end end
这个before_filter自然是用来检测User-Agent了,下面是google的一些移动设备
MOBILE_BROWSERS = ["android", "iphone", "ipod", "opera mini", "blackberry", "palm", "hiptop", "avantgo", "plucker", "xiino", "blazer", "elaine", "windows ce; ppc;", "windows ce; smartphone;", "windows ce; iemobile", "up.browser", "up.link", "mmp", "symbian", "smartphone", "midp", "wap", "vodafone", "o2", "pocket", "kindle", "mobile", "pda", "psp", "treo"].join('|')
注册一个mime type
在config/initializers/mime_types.rb中加入下面一条
Mime::Type.register_alias "text/html", :mobile
然后就可以在你的Controller添加一个mobile response了
respond_to :html, :rss, :mobile
现在我们的Controller已经算是修改完毕了,这时当你用手机访问时Controller会为你寻找相应的Views。比如你访问博客首页http://abitno.me/blog,移动设备用户使用的layout将会是main.mobile.erb,普通用户则是用main.html.erb。
一份精简的Views
给移动设备访问,很多东西都是冗余的,最好是新建立一份独立的Views。
我们首先要一个mobile的layout,main.mobile.erb,跟普通的erb文件同样的写法,不过需要一个特殊的meta
<meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no" name="viewport" />
貌似也没有其他要做的了,当然一些CSS的修改还是要做的
部分内容来自这里Mobile enable your Ruby on Rails site for small screens
最后,用你的手机访问我的blog吧,我需要你!!!
另外,有很多人不喜欢我的blog背景,那你也可以在电脑上访问移动版本
http://abitno.me/blog.mobile
谢谢国家,谢谢大家的关心与支持~
本文基于 署名-非商业性使用-禁止演绎 2.5 中国大陆 发布
8 COMMENTS >>LEAVE<<
-
学习了,嗯 ,好像我每次都是沙发啊,哦耶。
-
rails是你特长,那bug就靠你了,呵呵。话说我blog好了,因为我之前设置了多个A记录,搞得解析不了,汗……现在应该正常了。
-
删除测试评论把我的回复也删除了--
-
我发现你少了UCWEB
-
就是要多写一个模板麻烦了些,加新功能改进也不是很方便,一直在现有没有更方便的方式实现.
我现在博客桌面版跟手机用同一个模板,不过我现在是页面布局比较简单 -
http://metautonomo.us/2011/01/05/mobile-devices-and-rails-maintaining-your-sanity/
这里这个方案就可以不用写两个模板.