2

我正在尝试在此处学习本教程,但本教程似乎使用了此“匹配”功能。

match '/about',   :to => 'pages#about'

每当我这样做时,我都会从服务器收到此错误:

main:Object 的未定义方法“匹配”

如何编辑 routes.rb 文件,以便:

  1. 它将从一个长文件路径路由到一个短文件路径(例如 /pages/about 到 /about)
  2. 我可以有一个可以链接到的“about_path”变量(例如: <%= link_to "About", about_path %> )
4

3 回答 3

4

你在使用 Ruby on Rails 3 吗?match路由器语法仅适用于 Rails 3 。对于以前的版本,您可以定义命名路由:

map.about '/about', :controller => 'pages', :action => 'about'
于 2010-07-20T15:10:46.687 回答
0

该语法适用于即将推出的 Rails3(实际上在 beta4 中,但它尚未用于生产,如果您知道自己在做什么:P)

您应该将其用于 rails 2.3:

map.about '/about', :controller => 'pages', :action => 'about'

如果您有一个名为“关于”的操作来呈现特定页面,则此方法有效。否则,如果“关于”是您从“显示”操作中获取的简单页面,传递一个 ID 或一个 PERMALINK(例如:您正在使用 permalink_fu 插件),那么正确的语法是:

map.about '/about', :controller => 'pages', :action => 'about', :id => 'page_id_or_permalink'

这个解决方案不是最好的:如果您更改永久链接或删除/重新创建具有不同 ID 的页面,那么您必须更新路由。顺便说一句,它按照你的要求工作。

于 2010-07-20T15:20:00.567 回答
0

我这样做了:

  map.connect '/page', :controller => 'page2', :action => 'index'

所以,在我刚刚重定向到的 URL 中http://x.x.x.x/page,RoR 真的在加载http://x.x.x.x/page2/index.html.erb

此致,

伊万·卡拉斯科 Q.

于 2013-11-14T16:41:41.253 回答