Я использую Ruby on Rails 3.0.7 и пытаюсь правильно настроить (и, насколько это возможно,) мой маршрутизатор.
В файле routes.rb
у меня есть:
namespace :articles do
resources :categories
end
resources :articles
Чтобы работать должным образом, я должен указать namespace
перед оператором resources :articles
, чтобы маршрутизатор перехватывал запросы и направлял их в пространство имен, связанное со статьями. В противном случае (если resources :articles
указано перед namespace
), как можно вычесть из приведенного выше кода, все запросы, такие как
<my_site>/articles/1
<my_site>/articles/new
<my_site>/articles/1/edit
...
перехватывается, так что пространство имен статей будет "едва" достигнуто. Например, если вы сделаете запрос наподобие <my_site>/articles/categories
, он выдаст ошибку в следующем виде:
ActiveRecord::RecordNotFound
Couldn't find Article with ID=categories
Итак, как я могу справиться с этой ситуацией и как я могу улучшить код маршрутизатора? О чем вы советуетесь?
Запустив команду rake routes
в моей консоли, я получаю это (как указано):
articles_categories GET /articles/categories(.:format)
{:action=>"index", :controller=>"articles/categories"}
POST /articles/categories(.:format)
{:action=>"create", :controller=>"articles/categories"}
new_articles_category GET /articles/categories/new(.:format)
{:action=>"new", :controller=>"articles/categories"}
edit_articles_category GET /articles/categories/:id/edit(.:format)
{:action=>"edit", :controller=>"articles/categories"}
articles_category GET /articles/categories/:id(.:format)
{:action=>"show", :controller=>"articles/categories"}
PUT /articles/categories/:id(.:format)
{:action=>"update", :controller=>"articles/categories"}
DELETE /articles/categories/:id(.:format)
{:action=>"destroy", :controller=>"articles/categories"}
articles GET /articles(.:format)
{:action=>"index", :controller=>"articles"}
POST /articles(.:format)
{:action=>"create", :controller=>"articles"}
new_article GET /articles/new(.:format)
{:action=>"new", :controller=>"articles"}
edit_article GET /articles/:id/edit(.:format)
{:action=>"edit", :controller=>"articles"}
article GET /articles/:id(.:format)
{:action=>"show", :controller=>"articles"}
PUT /articles/:id(.:format)
{:action=>"update", :controller=>"articles"}
DELETE /articles/:id(.:format)
{:action=>"destroy", :controller=>"articles"}