你的第一个例子:
map.getproduct '/getProduct', :controller => 'your_controller', :action => 'your_action'
在控制器,你将有catType和颜色PARAMS哈希:
params[:catType]
=> 'toy'
params[:color]
=> 'red'
有没有更好的办法?可能是的,但这取决于你的需求。如果你将永远有catType和颜色参数,比你可以像这样添加路由:
map.getproduct '/getProduct/:catType/:color', :controller => 'your_controller', :action => 'your_action'
您将有机会获得使用参数散列这些参数就像在前面的例子。而您的网址看起来就像这样:
www.myapp.com/getProduct/toy/red
如果你的参数可能会改变,你可以使用通配符路线:
map.getproduct '/getProduct/*query', :controller => 'your_controller', :action => 'your_action'
然后,它会赶上,在开始时有www.my.app.com/getProduct/...
所有请求。但是你会在控制器中做更多的工作。您将有与此访问query
:
params[:query]
和www.myapp.com/getProduct/color/red/catType/toy
它会给:
params[:query]
=> ['color', 'red', 'catType', 'toy]
所以,你必须manualy解析它。
太好了...... Restful方法正是我想要的!检查并投票。 – 2010-02-15 13:49:57
我不喜欢它是宁静的。这些路线只搜索一些产品集合。 @chrisdinn的答案更加宁静,但我认为搜索路线不需要安宁。 Restful主要用于获取物体的集合和操纵其中一个物体。但无论如何,我很高兴我的回答很有帮助! – klew 2010-02-15 14:25:13