简体   繁体   中英

match method in routes.rb

I'm trying to follow this tutorial here but the tutorial seems to use this "match" function.

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

Whenever, I do the same, I get this error from the server:

undefined method `match' for main:Object

How can I edit the routes.rb file such that:

  1. it will route from a long file path to a short one (eg. /pages/about to /about)
  2. I can have a "about_path" variable that I can link to ( eg: <%= link_to "About", about_path %> )

Are you using Ruby on Rails 3? The match router syntax is for Rails 3 only. For previous versions you can define a named route:

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

I did it with:

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

so, in the URL I just redirect to http://xxxx/page and RoR is really loading http://xxxx/page2/index.html.erb

Best Regards,

Iván Carrasco Q.

that syntax is for the upcoming Rails3 (actually in beta4 but it's yet adopted for production, if you know what you're doing :P)

you should use this for rails 2.3:

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

this works if you have an action called 'about' that renders a specific page. otherwise, if 'about' is a simple page that you fetch from a 'show' action, passing an ID or a PERMALINK (eg: you're using permalink_fu plugin), then the right syntax is:

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

this solution it's not the best: if you change the permalink or delete/re-create the page with a different id, then you must update the routes. by the way it works as you asked.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM