ruby-on-rails - 如何命名嵌套的 Controller 和路由?

标签 ruby-on-rails

我正在与以下组织一起从头开始创建一个 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/

相关文章:

ruby-on-rails - 如何保留 PORO 表单对象字段输入?

ruby-on-rails - 在 ubuntu 中取消 bash 的源码

ruby-on-rails - 服务端推送 Rails

mysql - 日期时间的奇怪行为

css - 如何使用 Font Awesome 字体实现基本的共享社交按钮?

ruby-on-rails - 创建一个简单的 Rails 3 文本助手 Gem

mysql - Rails 显示分组后的最新值

ruby-on-rails - rails : Non id foreign key lookup ActiveRecord

ruby-on-rails - 使用 XML 作为 Rails 模型的数据源

ruby-on-rails - rails : method_missing is not called on model when using associations