微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 在Rails中创建一个Admin目录

我已经为网站开发了几个星期的CMS后端.我们的想法是首先在后端制作所有内容,以便它可以管理将在主网站上显示数据库和信息.

截至目前,我目前在普通的rails MVC结构中设置了所有代码.因此,用户管理员/用户和视频是/视频.

我的计划是为此获取代码并将其移至/ admin目录.所以上面的两个控制器需要由/ admin / users和/ admin / videos访问.我不确定如何使用ruote(将/ admin添加为前缀),我也不确定如何管理逻辑.我正在考虑做的是设置一个额外的“中间”控制器,当访问/ admin目录时,它会以某种方式嵌套在ApplicationControler和目标控制器之间.这样,只能为/ admin部分生成任何其他标志和重载方法(我相信我也可以使用过滤器).

如果这样做,那么下一个问题就是将视图逻辑分开(但这只是重命名文件夹等等).

要么我这样做,要么我有两个在它们之间共享MVC代码的rails实例(我猜数据库也是如此),但我担心这会导致很多重复错误.

关于我应该如何做这个的任何想法?

非常感谢!

解决方法

如果您不介意为每个资源使用两个控制器,则可以使用单独的“admin”命名空间.我喜欢这种方式,因为管理部分与公共部分完全不同.管理控制器实现所有CRUD操作,而公共控制操作仅实现show和index操作.

routes.rb中:

map.namespace :admin do |admin|
  admin.resources :users
  admin.resources :videos
end

map.resources :videos,:only => [:index,:show]

你的控制器可能是这样的:

class VideosController < PublicController; end

class Admin::VideosController < Admin::AdminController; end

class PublicController < ApplicationController
  layout 'public'
  before_filter :load_public_menu
end

class Admin::AdminController < ApplicationController
  layout 'admin'
  before_filter :login_required,:load_admin_menu
end

命名空间控制器和视图在app / controllers和app / views目录中有自己的子目录.如果使用form_for帮助程序,则需要修改其参数:

form_for [:admin,@video] do |f|

原文地址:https://www.jb51.cc/ruby/267940.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐