[转]Making your Rails app mobile with WAP and WML

中国有超过4亿的手机用户,手机上网超过4000万。一个人每天上网平均8小时,但是手机却是24小时开机。。。同时基于web和wap的站点,更有利于推广,公司属于服务行业性质,对于特定手机用户如果需要一些有用而信息量不大的资讯,是比电脑方便的多,论流量收费也花不了多少钱,可以及时的反馈和获取一些信息,期待中国式3G时代到来。。。

下面给出实现的具体步骤:
1。设置WAP WML 文本类型。你可以在每一个controller method里这样做,也可以在application.rb文件中用before_filter来实现:

before_filter :set_wap_content_type, :only => :wap

def set_wap_content_type
 @headers[”Content-Type”] = “text/vnd.wap.wml; charset=iso-8859-1″
end

2。我们创建一个布局app/views/layouts/wap.rhtml,使用wml。
<?xml version=”1.0″?>
<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN” “http://www.wapforum.org/DTD/wml_1.1.xml”>
<wml>
<card title=”<%= @title %>”>
<p align=”center”>
<%= @content_for_layout %>
</p>
</card>
</wml>
3。我们在index controller里增加一个wap方法,以便用户可以通过http://www.xxx.com/wap来访问我们wap站点。
def wap
 @title = “San Francisco Sailing Weather”
 render(:layout => “wml”)
end
4。最后我们来创建app/views/index/wap.rhtml来渲染我们的wap首页。
<%= php?name=link" onclick="tagshow(event)" class="t_tag">link_to ‘NOAA Marine Forecast’, { :controller => ‘/marine/forecast’, :action => ‘wap’ } %><br/>
<%= link_to ‘Wind Readings’, { :controller => ‘/marine/wind’, :action => ‘wap’ } %><br/>
<%= link_to ‘Current Predictions’, { :controller => ‘/marine/tide’, :action => ‘wap’ } %>

下面的链接是效果图:
http://webcab.de/cgi-bin/wcl.cgi ... indandtides.com/wap

wap网站服务器配置信息:
修改Apache安装目录下conf/mime.types文件:
在该文件中增加以下内容:
  text/vnd.wap.wml .wml
  image/vnd.wap.wbmp .wbmp
  application/vnd.wap.wmlc .wmlc
  text/vnd.wap.wmls .wmls
  application/vnd.wap.wmlsc .wmlsc
重启动服务器即可。
[]