Rails: как получить URL как /users/2/events/2009-02.html - PullRequest
1 голос
/ 01 июня 2009

Для целей кэширования у меня не может быть URL вроде / users / 2 / index? Month = 2009-02. Проблема этого подхода заключается в том, что если я выполняю кэширование страниц, то такая же страница возвращается даже для / users / 2 / index? Month = 2009-03.

Чтобы решить проблему с кэшированием, я бы хотел, чтобы URL был похож на /users/2/events/2009-02.html. Я определил пользователей как спокойный ресурс.

map.resources: users

Кто-нибудь знает, как получить URL, например /users/2/events/2009-02.html, который будет сопоставлен с

контроллер = пользователи действие = события id = 2 или user_id = 2 месяц = ​​2009-02

1 Ответ

9 голосов
/ 01 июня 2009

В файле маршрутов вашего приложения вы можете настроить именованный маршрут следующим образом:

map.user_events '/users/:user_id/events/:month.html',
                :controller => :users, :action => :events,
                :requirements => {:month => /[0-9]{4}-[0-9]{2}/}

Маршрутизация DSL сильно изменилась в Rails 3. Теперь вы бы сделали что-то еще подобное:

get '/users/:user_id/events/:month.html' => 'users#events',
    :constraints => {:month => /[0-9]{4}-[0-9]{2}/}

Более подробная информация о маршрутизации здесь: http://guides.rubyonrails.org/routing.html

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