Маршруты Rails - показать действие как root - PullRequest
3 голосов
/ 05 марта 2010

Я пытаюсь сделать действие шоу одного из моих контроллеров корневым. Я легко могу сделать это:

map.root :controller => 'articles', :action => 'index'

Когда я захожу на localhost: 3000 / он перечисляет все статьи - это здорово! Однако я хочу добиться URL-адреса, подобного этому

localhost:3000/1

Для отображения статьи с идентификатором 1. Я думаю, что мне нужно будет изменить маршрут следующим образом:

map.root :controller => 'articles', :action => 'show'

Но, похоже, это не работает. Вместо этого - он ищет контроллер с именем 1 - который не существует.

Как бы я поступил так?

Спасибо!

Ответы [ 4 ]

6 голосов
/ 05 марта 2010

Попробуйте это в routes.rb

map.connect ':id', :controller => 'articles', :action => 'show'

Вы хотите убедиться, что это маршрут с низким приоритетом из-за его общего характера. То есть поместите его в конец файла routes.rb, но над этим разделом (если вы его еще не удалили):

# low-priorty article show route
map.connect ':id', :controller => 'articles', :action => 'show'

# Install the default routes as the lowest priority.
# Note: These default routes make all actions in every controller accessible via GET requests. You should
# consider removing or commenting them out if you're using named routes and resources.
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
5 голосов
/ 05 марта 2010

Корневой маршрут определяет только один маршрут.Не несколько.Вы можете определить другой маршрут

map.connect '/:id', :controller => 'articles', :action => 'show'

Если вы хотите этот стиль маршрута, возможно, ресурсы (http://api.rubyonrails.org/classes/ActionController/Resources.html#M000522) отлично подходит для вас.

3 голосов
/ 13 февраля 2013

В Rails 3 нет метода карты, доступного в маршрутах.Вместо этого используйте что-то вроде этого:

match ':id', :controller => 'articles', :action => 'show'

И не забудьте указать это ниже маршрутов, которые должны иметь приоритет.

2 голосов
/ 07 июля 2011

Используйте это

resource :articles, :path => '/'

с этим вся ваша статья будет прямо под root

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...