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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值