routes.rb中的匹配方法

时间:2010-07-20 14:56:00

标签: ruby-on-rails routes named-routing

我正在尝试按照本教程here进行操作,但教程似乎使用了这个“匹配”功能。

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

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

  

主要的未定义方法`match':对象

如何编辑routes.rb文件:

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

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

该语法适用于即将推出的Rails3(实际上是在beta4中,但如果您知道自己在做什么,它仍然可以用于制作:P)

你应该将它用于rails 2.3:

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

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

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

这个解决方案并不是最好的:如果您更改固定链接或删除/重新创建具有不同ID的页面,则必须更新路由。按照你的要求,它的工作方式。

答案 2 :(得分:0)

我是这样做的:

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

所以,在网址中我只是重定向到http://x.x.x.x/page而RoR实际上正在加载http://x.x.x.x/page2/index.html.erb

最诚挚的问候,

IvánCarrascoQ。