Rails / Merb中的混合动态路由

时间:2010-07-03 21:20:17

标签: ruby-on-rails ruby routing url-routing merb

我试图找出将简单路线映射到一个网址的最佳方法。应用程序包含4个模型:位置,类别,预算,公司。但是每个模型都可以像这样映射到单个URL。对于真实世界的示例,您可以查看http://sortfolio.com/

/chicago <- Location
/3k-5k <- Budget
/bars <- Category
/company-name <- Company

而且他们可以混合成这样的东西:

/chicago/3k-5k <- Location, Budget
/chicago/bars/3k-5k <- Location, Category, Budget
/bars/3k-5k <- Category, Budget
/foo-bar <- Company

所以,基本上有一个特定的参数顺序:

Location/Category/Budget

有2条路线可以匹配所有网址:

match('/').to(:controller => 'search', :action => 'index')
match('/:location(/:category(/:budget)))').to(:controller => 'search', :action => 'index')

但是在控制器中它有点棘手,因为我必须按特定顺序检查项目。公司网址排在最后,因为它们可能会覆盖系统路径。

它工作正常,但我必须为每个请求进行大量查找,因为参数是完全动态的。没什么大不了的,这样的信息可以存储在缓存中,但我只是想知道是否有其他解决方案或方法?

我只有一个想法:有一个额外的表来存储有关路径及其引导的信息。换句话说 - 表非规范化。

+----+----------+------------+
| ID | Url      | ObjectType |
+----+----------+------------+
| 1  | chicago  | location   |
| 2  | bars     | category   |
| 3  | 3k-5k    | budget     |
| 4  | foo-bar  | company    |
+----+----------+------------+

url解析过程可能只包含在一个自定义查询中。

请指教。

0 个答案:

没有答案