我正致力于通过以下组织从头开始创建一个wiki应用程序:
主要控制者:Wiki 嵌套控制器:WikiCategories 嵌套控制器:WikiArticles
在我的config / routes.rb中,我有:
resource :wiki do
resources :wiki_categories, :as => :categories
resources :wiki_articles, :as => :articles
end
我选择将类别和文章控制器命名为WikiCategories和WikiArticles,以区别于我将来在博客嵌套下制作的其他类别和文章控制器。
这给了我以下路线:
/wiki/wiki_categories/new
/wiki/wiki_articles/new
有没有办法重写路线:
/wiki/categories/new
/wiki/articles/new
...仍在使用WikiCategories和WikiArticles控制器名称?
答案 0 :(得分:1)
是的,通过指定controller
,可以按照您喜欢的方式命名资源。
resource :wiki do
resources :categories, controller: 'wiki_categories'
resources :articles, controller: 'wiki_articles'
end
有关详细信息,请参阅the guide。
答案 1 :(得分:1)
您可以使用path:
选项,如下所示:
resource :wiki do
resources :wiki_categories, path: 'categories', :as => :categories
resources :wiki_articles, path: 'articles', :as => :articles
end
哪个会给你:
/wiki/categories/...
/wiki/articles/...
有关详细信息,请参阅指南的Translated Paths部分。
答案 2 :(得分:1)
IMO,看起来你的态度有点过时了。如Controller Namespaces and Routing中所述,为什么不这样做:我选择将类别和文章控制器命名为WikiCategories和WikiArticles,以区别于我希望将来在博客嵌套下制作的其他类别和文章控制器。
namespace :wiki do
resources :categories, :articles
end
哪个会给你:
wiki_categories GET /wiki/categories(.:format) wiki/categories#index
POST /wiki/categories(.:format) wiki/categories#create
new_wiki_category GET /wiki/categories/new(.:format) wiki/categories#new
edit_wiki_category GET /wiki/categories/:id/edit(.:format) wiki/categories#edit
wiki_category GET /wiki/categories/:id(.:format) wiki/categories#show
PATCH /wiki/categories/:id(.:format) wiki/categories#update
PUT /wiki/categories/:id(.:format) wiki/categories#update
DELETE /wiki/categories/:id(.:format) wiki/categories#destroy
wiki_articles GET /wiki/articles(.:format) wiki/articles#index
POST /wiki/articles(.:format) wiki/articles#create
new_wiki_article GET /wiki/articles/new(.:format) wiki/articles#new
edit_wiki_article GET /wiki/articles/:id/edit(.:format) wiki/articles#edit
wiki_article GET /wiki/articles/:id(.:format) wiki/articles#show
PATCH /wiki/articles/:id(.:format) wiki/articles#update
PUT /wiki/articles/:id(.:format) wiki/articles#update
DELETE /wiki/articles/:id(.:format) wiki/articles#destroy
然后,创建命名空间控制器,类似于:
app/controllers/wiki/categories.rb
class Wiki::CategoriesController < ApplicationController
...
end
和
app/controllers/wiki/articles.rb
class Wiki::ArticlesController < ApplicationController
...
end