【问题标题】:Rails full-fledged admin control panelRails 成熟的管理控制面板
【发布时间】:2011-09-09 03:05:46
【问题描述】:

我想知道在创建一个成熟的管理控制面板时,Rails 的方法是什么。我所说的成熟是指一个真正的控制面板,可以在专业水平上使用,而不是个人/内部脚手架。

我不相信它与博客截屏视频或 Rails 入门教程中显示的用户界面存储在同一文件夹中!

我确信在任何地方都会使用相同的模型,但是视图呢?

请详细说明。在 Rails 中开始我的第一个真正项目时,我不想使用我的 PHP 心态。

谢谢。

【问题讨论】:

  • 你想让你的管理控制面板做什么?
  • 一切。假设它是一个新闻网站,其编辑可以登录以管理故事、创建类别、添加新编辑等。

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

您可以在此处找到用于管理管理界面的 Rails 插件/引擎列表:

http://ruby-toolbox.com/categories/rails_admin_interfaces.html

我用过一堆(typus 和 rails_admin),一点也不差。

同时查看最近发布的 ActiveAdmin

http://activeadmin.info/

【讨论】:

    【解决方案2】:

    正如前面的答案所暗示的,命名空间有助于将管理功能与其他用户功能整齐地分开,例如:

    # In your routes
    
    namespace :admin do
      resources :stories
      resources :editors
       #etc.
    end
    

    然后您将所有管理员控制器放在一个“管理员”子文件夹中,并且始终需要管理员来访问它们:

    # app > controllers > admin > stories_controller.rb
    
    class Admin::StoriesController < ApplicationController
    
      before_filter :authenticate_admin!   # assuming you're using devise
    
      def index
        #etc.
      end
    
    end
    

    这样做的好处是您只需在一个地方检查管理员(管理员控制器的 before_filter),而不必在普通控制器/视图中的任何地方放置条件。

    【讨论】:

    • 听起来不错。这在 Rails 中是可行的还是需要额外的 gem?
    • @emurad 这是开箱即用的功能,除了用于身份验证的设计之外,这是一个宝石。
    • 除此之外,我通常做的是在我的常规控制器文件夹中添加class AdminController,该文件夹具有 before_filter 方法“require_admin”或类似方法,并在控制器中有一个名为 @987654324 的子文件夹@,其中包含 class Admin::StoriesController &lt;&lt; AdminController 之类的控制器。这样一来,您的所有管理控制器都是管理员专用的,您可以将任何其他共享功能添加到 AdminController。
    【解决方案3】:

    这取决于您的应用程序的性质,但是将管理功能与用户放在同一视图中并没有错;只需在显示特定部分之前测试您的权限角色。

    如果你真的需要一个管理员界面,你可以命名一些控制器和视图。还有其他帖子处理如何做到这一点,例如The Rails Way - Namespaces

    【讨论】:

    • 让我们来看看像 37signals Basecamp 这样的真实应用。你认为他们的管理控制面板(他们在其中管理用户、进行计费等)在控制器和视图方面位于用户界面旁边吗?
    猜你喜欢
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    相关资源
    最近更新 更多