在Rails中可以通过namespace来管理controller。
首先生成scaffold:
script/generate scaffold article title:string body:text
在routes.rb中添加如下路由:
map.namespace :admin
do
|
admin
|
admin.resources :articles
end
由意味着给article增加了一个名为admin的namespace,将controllers中的articles_controller.rb修改为controllers/admin/articles_controller.rb,也就是将这个控制器放到admin这个文件夹中。
先看一下相应的路由规则,执行rake roures:
admin_articles GET
/
admin
/
articles {:action
=>
"
index
"
, :controller
=>
"
admin/articles
"
}
formatted_admin_articles GET
/
admin
/
articles.:format {:action
=>
"
index
"
, :controller
=>
"
admin/articles
"
}
POST
/
admin
/
articles {:action
=>
"
create
"
, :controller
=>
"
admin/articles
"
}
POST
/
admin
/
articles.:format {:action
=>
"
create
"
, :controller
=>
"
admin/articles
"
}
new_admin_article GET
/
admin
/
articles
/
new
{:action
=>
"
new
"
, :controller
=>
"
admin/articles
"
}
formatted_new_admin_article GET
/
admin
/
articles
/
new
.:format {:action
=>
"
new
"
, :controller
=>
"
admin/articles
"
}
edit_admin_article GET
/
admin
/
articles
/
:id
/
edit {:action
=>
"
edit
"
, :controller
=>
"
admin/articles
"
}
formatted_edit_admin_article GET
/
admin
/
articles
/
:id
/
edit.:format {:action
=>
"
edit
"
, :controller
=>
"
admin/articles
"
}
admin_article GET
/
admin
/
articles
/
:id {:action
=>
"
show
"
, :controller
=>
"
admin/articles
"
}
formatted_admin_article GET
/
admin
/
articles
/
:id.:format {:action
=>
"
show
"
, :controller
=>
"
admin/articles
"
}
PUT
/
admin
/
articles
/
:id {:action
=>
"
update
"
, :controller
=>
"
admin/articles
"
}
PUT
/
admin
/
articles
/
:id.:format {:action
=>
"
update
"
, :controller
=>
"
admin/articles
"
}
DELETE
/
admin
/
articles
/
:id {:action
=>
"
destroy
"
, :controller
=>
"
admin/articles
"
}
DELETE
/
admin
/
articles
/
:id.:format {:action
=>
"
destroy
"
, :controller
=>
"
admin/articles
"
}
/
:controller
/
:action
/
:id
/
:controller
/
:action
/
:id.:format
对比一下不加admin这个namespace时的路由:
article_index GET
/
article {:action
=>
"
index
"
, :controller
=>
"
article
"
}
formatted_article_index GET
/
article.:format {:action
=>
"
index
"
, :controller
=>
"
article
"
}
POST
/
article {:action
=>
"
create
"
, :controller
=>
"
article
"
}
POST
/
article.:format {:action
=>
"
create
"
, :controller
=>
"
article
"
}
new_article GET
/
article
/
new
{:action
=>
"
new
"
, :controller
=>
"
article
"
}
formatted_new_article GET
/
article
/
new
.:format {:action
=>
"
new
"
, :controller
=>
"
article
"
}
edit_article GET
/
article
/
:id
/
edit {:action
=>
"
edit
"
, :controller
=>
"
article
"
}
formatted_edit_article GET
/
article
/
:id
/
edit.:format {:action
=>
"
edit
"
, :controller
=>
"
article
"
}
article GET
/
article
/
:id {:action
=>
"
show
"
, :controller
=>
"
article
"
}
formatted_article GET
/
article
/
:id.:format {:action
=>
"
show
"
, :controller
=>
"
article
"
}
PUT
/
article
/
:id {:action
=>
"
update
"
, :controller
=>
"
article
"
}
PUT
/
article
/
:id.:format {:action
=>
"
update
"
, :controller
=>
"
article
"
}
DELETE
/
article
/
:id {:action
=>
"
destroy
"
, :controller
=>
"
article
"
}
DELETE
/
article
/
:id.:format {:action
=>
"
destroy
"
, :controller
=>
"
article
"
}
/
:controller
/
:action
/
:id
/
:controller
/
:action
/
:id.:format
所有的路由规则上面,都加上了admin这个namespace。
下面就要将views目录下面的articles目录改到views/admin目录下面,因为根据路由规则,会到views/admin/articles/目录下面去查找相应的模板。
另外,还需要将原来的new_article_url | new_article_path等helper方法修改为new_admin_article_url | new_admin_article_path,将这些helper方法全部加上admin这个namespace。
分享到:
相关推荐
JsNamespaceRails Rails的资产管道将所有js文件编译成一个在所有页面上执行的文件。 有一个问题,有时候我们想在...在application.js或其他主文件中需要js-namespace-rails文件,请注意js-namespace-rails没有依赖性
说明 这是使用rails5 api + grape,来实现前缩小分离项目的一个基本脚手架。为帮助新手快速的建造一个rails项目。本仓库尽量保持业务...解决grape-swagger渲染实体时空不会使用namespace 修改grape属性的i18n到`acti
dummy 在engine.rb中我们可以看到isolate_namespace 数学“这里的isolate_namespace方法值得特别注意。这个调用负责将控制器、模型、路由和其他东西隔离到它们自己的命名空间中,远离应用程序内部的类似组件” 正如 ...
凯巴普莱斯 要求 在将 Kebapress 安装到您的应用程序之前,您需要: ... namespace :hq do mount Kebapress :: Engine => '/mount_point' # Example: '/blog' end get '/blog/:id' , to : 'kebapres
现在,它可以与Rails 5.x和Rails 6.x一起使用快速开始如果您最初具有以下routes.rb文件: Rails . application . routes . draw do namespace :admin do resources :cars end resources :carsend rake routes.rb的...
凯巴佩奇 要求 在将 Kebapage 安装到您的应用程序之前,您需要: ... namespace :hq do mount Kebapage :: Engine => '/mount_point' # Example: '/spm' end get '/:id' , to : 'kebapage/static_page
TsRoutes for Rails 此gem在TypeScript中生成Rails URL帮助器,该routes.rb与routes.rb同步。 这是受启发的,它发明了将URL助手导出到JavaScript的好主意。用法在您的lib/tasks/ts_routes.rake : namespace :ts do ...
) 高性能实时前缀搜索,索引在Redis的存储Rails应用程序。注意! 有更多更好的方法可供选择!下面的两种方式将是更好的选择:主人身份产品特点即时搜寻高性能前缀匹配搜索支持别名匹配支持ActiveRecord和Mongoid 按...
/安装 将其添加到您的rails应用程序或引擎的Gemfile中: gem 'beautiful_scaffold'下一个 然后跑bundle install用法 脚手架 ↑ # model : underscore and singular# mountable_engine : underscore# namespace :...
将gem添加到您的Rails应用程序Gemfile中:gem'bootstrap_admin gem 'bootstrap_admin' 并运行: $ bundle install 或者只是运行: $ gem install bootstrap_admin 然后,只需运行安装生成器$ rails g bootstrap_...
bundle install发电机安装ShoppingMall后,运行生成器: rails generate shopping_mall:install 这将在您的应用程序中添加一个shopping_mall.rb初始化程序,并在您的生产和开发环境中添加以下内容: Rails ....
将 Rails 3 路由功能和语法引入 CFWheels,使命名空间和资源易于使用。 安装 只需从项目的下载部分下载最新的.zip文件。 将此文件复制到 CFWheels 项目的/plugins目录中并重新加载应用程序。 或者,包含 jQuery ...
RESTful routing, supports namespace and nested resource. Thanks to RailwayJS. Assets management (something like assets pipeline in Rails). COKE uses a YAML file to manage all the assets. You can ...
Redis设置添加到您的Gemfile: gem "redis" , ">= 3.2"gem "redis-namespace" , ">= 1.1.0" 默认情况下,Vanity配置为在本地主机端口6379和数据库0上使用Redis。 样本config/vanity.yml可能如下所示:
将pundit_kit添加到您的gemfile中: gem 'pundit_kit' 用法 初始化路由示例: class ClientNotAllowedError < StandardError> ( user ) { user . staff? } , presence : false do namespace :admin , if : -> ...