метод сопоставления в rout.rb - PullRequest
2 голосов
/ 20 июля 2010

Я пытаюсь следовать этому уроку здесь но учебник, похоже, использует эту функцию "соответствия".

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

Всякий раз, когда я делаю то же самое, я получаю эту ошибкус сервера:

неопределенный метод `match 'для main: Object

Как мне отредактировать файл rout.rb так, чтобы:

  1. он будет перенаправлять с длинного пути к короткому файлу (например, / pages / about to / about)
  2. У меня может быть переменная about_path, на которую я могу ссылаться (например: <% =link_to "About", about_path%>)

Ответы [ 3 ]

4 голосов
/ 20 июля 2010

Вы используете Ruby on Rails 3? Синтаксис маршрутизатора match предназначен только для Rails 3. Для предыдущих версий вы можете определить именованный маршрут:

map.about '/about', :controller => 'pages', :action => 'about'
0 голосов
/ 14 ноября 2013

Я сделал это с:

  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.

0 голосов
/ 20 июля 2010

этот синтаксис предназначен для будущего Rails3 (на самом деле в бета-версии 4, но он еще не принят для производства, если вы знаете, что делаете: P)

Вы должны использовать это для рельсов 2.3:

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

это работает, если у вас есть действие под названием «about», которое отображает определенную страницу. в противном случае, если «about» - это простая страница, которую вы извлекаете из действия «show», передавая идентификатор или PERMALINK (например: вы используете плагин permalink_fu), то правильный синтаксис:

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

это решение не самое лучшее: если вы измените постоянную ссылку или удалите / заново создадите страницу с другим идентификатором, то вы должны обновить маршруты. кстати работает как ты просил.

...