2010-02-12 114 views
0

如何将路由www.homepage.com/site/about路由到www.homepage.com/about例如?我仍然想使用“网站”作为控制器,我只是想从路线中删除它。Rails中的路由问题

在另一张纸条上,通常您会如何为网页设置路线,如关于网站名称后显示的about和contact?

+0

让我们开始在这里讨论Rails的一些问题。现在是一团糟。这是我的老问题的副本:http://stackoverflow.com/questions/1722574/can-controller-names-in-restful-routes-be-optional – 2010-02-12 06:21:32

回答

2

对于第一个问题,你可以把这样的事情在你的routes.rb:

map.about '/约',:控制器=> '网站',:动作=> '关于'

至于第二个问题,我不太相信它,你能更具体一点吗?

2

在单独的说明中,ss通常为网页名称之后出现的about和contact等页面设置路由吗?

如果你遵循的REST原则(和你应该),然后通过和大型每个网址应该以“资源”被终止(即:一个名词,一个“东西”)。每个资源都有一个控制器,而这些控制器有一个standardized and limited set of actions

这是“经典”的路由方案,其中控制器将有更多样化的行动(因此你可以一概而论更多的功能集成到一个更大的控制器)

所以有点不同的,例如,在RESTful系统:

  • /接触将映射到的ContactController,和在某些其他控制器中的“接触”的动作(因为它可以在经典路由)
  • /约将类似地映射到一个AboutController 。
  • /site/about将映射到AboutController,但这将是Site名称空间下的“嵌套”路由。如果你想获得关于嵌套的核心(我通常会这样做),我会:
    • 把关于控制器放在站点模块(因此Sites :: AboutController),而这又存储在文件/ app/controllers /site/about_controller.rb
    • 创建SiteController
    • 地图/网站SiteController

如果你有一个预先存在的网站:AboutController映射到/网站/约,你想把它重新映射到/ about,你可以使用@ rbaezam79的m来实现ethod。但是,为了保持一致性,我会认真考虑重新定位和重命名类。

上面列出的所有资源可能会被视为“单身”资源。这意味着:

  • 您使用map.resource而不是map.resources到你的路由
  • 的默认操作是“作秀”映射(而不是“指数”,因为它是与非单资源)。通常这将是您需要的唯一操作。 (你永远不会想创建或删除你的关于页面,是吗?)
  • 这些名字通常是单数而不是复数。 (虽然我遇到了这个绊脚石)

当设置这样的路线时,一定要定期运行“rake routes”命令;这会向你显示你在任何时候都得到了什么。