tim*_*one 2 ruby-on-rails ruby-on-rails-3
我正在将一个zend框架/ php应用程序移植到rails,并且有一组参数用于查询.
例如:
/locations/get-all-locations/lat/xxx.xxx/lng/xxx.xxx/radius/5/query/lemonade/updated_prev_hours/72
Run Code Online (Sandbox Code Playgroud)
但是可以提供这样的变化,例如省略查询或距离参数(即基本上可能需要在不同的集合中 - 另一个问题).似乎所有参数都需要命名.
最好是通过像这样的静态处理来处理这个问题:
match 'locations/get-all-locations/lat/:lat/lng/:lng/radius/:radius/query/:query/updated_prev_hours/:updated_prev_hours => 'locations#get_all_locations'
Run Code Online (Sandbox Code Playgroud)
这就是我需要的所有值,这些值将在params哈希中可用吗?或者是否有更好的策略来处理这样的复杂网址?
谢谢
看起来你的URL太深了,只是使用查询字符串会更合适.但是,如果您正在移植并且没有其他选项,那么您可以使用route globbing执行此操作.
就像是:
match "locations/get-all-locations/*options" => "locations#get_all_locations"
Run Code Online (Sandbox Code Playgroud)
然后,您可以执行以下操作来匹配这些:
Hash[*params[:options].split("/")]
Run Code Online (Sandbox Code Playgroud)
或者通过以下方式合并它们
params.merge!(Hash[*params[:options].split("/")])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
752 次 |
| 最近记录: |