`
rainlife
  • 浏览: 233431 次
  • 性别: Icon_minigender_1
  • 来自: 我也来自火星?
社区版块
存档分类
最新评论

Rails中的namespace

阅读更多

在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。

分享到:
评论

相关推荐

    js-namespace-rails:js-namespace-rails让您选择可以在rails资产管道中执行的javascript代码段

    JsNamespaceRails Rails的资产管道将所有js文件编译成一个在所有页面上执行的文件。 有一个问题,有时候我们想在...在application.js或其他主文件中需要js-namespace-rails文件,请注意js-namespace-rails没有依赖性

    rails-api-4.0.0

    在Rails 4.0.0中,引入了专门针对API开发的Rails API模式,为开发者提供了构建高效、可维护的RESTful API的工具。 一、Rails API模式的核心特点: 1. 轻量级:Rails API模式去掉了不必要的视图层,使得应用更加轻便...

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...

    使用sitemap_generator来为rails网站生成Sitemap

    这篇博文将讨论如何使用`sitemap_generator` gem在Rails应用中实现这一功能。 首先,让我们了解什么是Sitemap。Sitemap是一个XML文件,它列出了网站的所有页面,包括URL、更新频率和页面重要性等信息。这有助于搜索...

    Rails Best Practices

    **Rails最佳实践** Rails,全称Ruby on Rails,是一个基于Ruby语言的开源Web应用程序框架,遵循MVC(模型-视图-控制器)架构模式。...在实际开发过程中,不断学习和积累经验,才能更好地驾驭Rails这个强大的框架。

    rails-api-grape:基于Rails和Garpe开发前替代分离网站-逐步

    说明 这是使用rails5 api + grape,来实现前缩小分离项目的一个基本脚手架。为帮助新手快速的建造一个rails项目。本仓库尽量保持业务...解决grape-swagger渲染实体时空不会使用namespace 修改grape属性的i18n到`acti

    rails-engine-example

    dummy 在engine.rb中我们可以看到isolate_namespace 数学“这里的isolate_namespace方法值得特别注意。这个调用负责将控制器、模型、路由和其他东西隔离到它们自己的命名空间中,远离应用程序内部的类似组件” 正如 ...

    Ruby on Rails网站项目构建简单指南

    对于初学者而言,将Rails文档和API文档放置在本地环境中非常有用,尤其是在网络不佳的情况下。Rails提供了便捷的方法来生成这些文档。 **1. 添加依赖包** - **命令**: 在`Gemfile`的`development`区块添加`gem 'red...

    kebapress:用于 Cybele 初始化 Rails 应用程序的 Rails 博客引擎

    凯巴普莱斯 要求 在将 Kebapress 安装到您的应用程序之前,您需要: ... namespace :hq do mount Kebapress :: Engine => '/mount_point' # Example: '/blog' end get '/blog/:id' , to : 'kebapres

    rails_api_with_controller

    标题 "rails_api_with_controller" 暗示我们将探讨如何在Ruby on Rails框架中构建一个API,特别是使用Controller来实现。Rails API模式专为创建数据驱动的Web服务而设计,通常用于构建后端服务,供前端应用程序(如...

    building_a_rails_api

    在本教程中,我们将深入探讨如何构建一个基于Ruby on Rails的API。Ruby on Rails(简称Rails)是一个流行的开源Web应用程序框架,它遵循“约定优于配置”(Convention over Configuration,CoC)和“Don't Repeat ...

    grape-on-rails-tutorial

    在 Rails 项目中创建一个新的 Grape API 模块,例如 `lib/api/v1/base.rb`: ```ruby module Api module V1 class Base prefix 'v1' format :json default_format :json end end end ``` 然后,在 `config...

    关于Ruby on Rails路由配置的一些建议

    在Ruby on Rails框架中,路由是连接用户请求和应用程序逻辑的关键组成部分。正确的路由配置不仅能提高代码的可读性和维护性,还能帮助开发者更好地组织应用结构。本文将详细介绍Ruby on Rails中的一些路由配置建议,...

    route_translator:将您的Rails应用路线轻松转换为多种语言

    现在,它可以与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:Kebapage 是一个用于 Cybele 初始化 Rails 应用程序的静态页面引擎

    凯巴佩奇 要求 在将 Kebapage 安装到您的应用程序之前,您需要: ... namespace :hq do mount Kebapage :: Engine => '/mount_point' # Example: '/spm' end get '/:id' , to : 'kebapage/static_page

    ts_routes-rails:受js-routes的启发,将Rails URL助手导出到TypeScript。

    TsRoutes for Rails 此gem在TypeScript中生成Rails URL帮助器,该routes.rb与routes.rb同步。 这是受启发的,它发明了将URL助手导出到JavaScript的好主意。用法在您的lib/tasks/ts_routes.rake : namespace :ts do ...

    redis-search:已弃用! 高性能实时前缀搜索,索引存储在Redis for Rails应用程序中

    ) 高性能实时前缀搜索,索引在Redis的存储Rails应用程序。注意! 有更多更好的方法可供选择!下面的两种方式将是更好的选择:主人身份产品特点即时搜寻高性能前缀匹配搜索支持别名匹配支持ActiveRecord和Mongoid 按...

    Beautiful-Scaffold:Rails生成器,可打造完整而美观的支架

    /安装 将其添加到您的rails应用程序或引擎的Gemfile中: gem 'beautiful_scaffold'下一个 然后跑bundle install用法 脚手架 ↑ # model : underscore and singular# mountable_engine : underscore# namespace :...

    Ruby的25个编程细节(技巧、实用代码段)

    在Rails中,`find` 方法有许多变体,其中之一就是 `find(:first)`,用于查询符合条件的第一条记录。结合 `:conditions` 参数,我们可以指定查询条件。 **示例代码:** ```ruby mobile_info = MobileInfo.find(:...

    bootstrap_admin:为您的应用程序创建美观,简单的管理界面!

    将gem添加到您的Rails应用程序Gemfile中:gem'bootstrap_admin gem 'bootstrap_admin' 并运行: $ bundle install 或者只是运行: $ gem install bootstrap_admin 然后,只需运行安装生成器$ rails g bootstrap_...

Global site tag (gtag.js) - Google Analytics