我正在与以下组织一起从头开始创建一个 wiki 应用程序:
主 Controller :Wiki 嵌套 Controller :WikiCategories 嵌套 Controller :WikiArticles
在我的 config/routes.rb 我有:
resource :wiki do
resources :wiki_categories, :as => :categories
resources :wiki_articles, :as => :articles
end
我选择将类别和文章 Controller 命名为 WikiCategories 和 WikiArticles,以区别于我希望将来在博客嵌套下创建的其他类别和文章 Controller 。
这给了我以下路线:
/wiki/wiki_categories/new
/wiki/wiki_articles/new
有什么办法可以将路由改写为:
/wiki/categories/new
/wiki/articles/new
...仍然使用 WikiCategories 和 WikiArticles Controller 名称?
最佳答案
I've chosen to name the categories and articles controllers as WikiCategories and WikiArticles to differentiate from other category and article controllers that I want to make in the future under a blog nesting.
IMO,您似乎有点违反惯例。如 Controller Namespaces and Routing 中所述,为什么不这样做:
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
然后,创建命名空间 Controller ,例如:
app/controllers/wiki/categories.rb
class Wiki::CategoriesController < ApplicationController
...
end
和
app/controllers/wiki/articles.rb
class Wiki::ArticlesController < ApplicationController
...
end
关于ruby-on-rails - 如何命名嵌套的 Controller 和路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46412696/