美文网首页
Ruby&Rails---ActiveAdmin快速建立属后台

Ruby&Rails---ActiveAdmin快速建立属后台

作者: HPD_黄霹雳 | 来源:发表于2017-12-04 17:04 被阅读0次

    github: https://github.com/activeadmin/activeadmin
    官方文档:https://activeadmin.info/index.html

    安装

    devise是用于登录验证

    gem 'activeadmin'
    gem 'devise'
    

    由于我们使用devise,所以我们需要运行这个构造器

    rails g active_admin:install
    

    执行后会创建这些文件

        app/admin/dashboard.rb
        app/assets/javascripts/active_admin.js
        app/assets/stylesheets/active_admin.scss
        config/initializers/active_admin.rb
    

    终端执行

    bin/rails db:migrate
    

    activeAdmin 会在seeds.rb中生成默认用户的创建方式,终端执行下面命令来生成后台用户

    bin/rails db:seed
    

    然后就可以访问了,会让你登录,就用刚生成的用户的信息

    http://192.168.20.106:3000/admin/
    
    如果要关闭用户登录验证功能,可以用:

    initializer/active_admin

      config.current_user_method = false
      config.authentication_method = false
    
    Comment

    因为不需要comment(注解)这个功能,所以在initializer中的active_admin中关闭这个功能
    config.comments = false

    Utility Navigation(导航)

    在右上角有一些快速导航按钮,默认的有两个,一个是当前的admin用户,另外一个是登出按钮,我们可以增加导航按钮

    ActiveAdmin.setup do |config|
      config.namespace :admin do |admin|
        admin.build_menu :utility_navigation do |menu|
          menu.add label: "ActiveAdmin.info", url: "http://www.activeadmin.info",
                                              html_options: { target: :blank }
          admin.add_current_user_to_menu  menu
          admin.add_logout_button_to_menu menu
        end
      end
    end
    
    创建Resources

    eg: Post是我的一个model

    bin/rails  g active_admin:resource Post
    

    执行后会生成app/admin/post.rb文件

    permit_params

    使用permit_params方法来定义哪些属性可以被修改,如果修改了没有被permit_params定义的属性,修改不会生效

    ActiveAdmin.register Post do
      permit_params :title, :content, :publisher_id
    end
    
    
    定义一个Resource中的action

    默认的,所有的CRUD的actions都可以操作,如果要禁用其中的某些操作,用如下定义:

    ActiveAdmin.register Post do
      actions :all, except: [:update, :destroy]
    end
    
    
    自定义Menu

    一个resource默认都会在全局导航栏上,如果要禁止一个resource出现在全局导航栏上,我们可以用:

    ActiveAdmin.register Post do
      menu false
    end
    
      menu label: "自定义标题",priority: 1
    

    menu有4个选项可以用:
    :label - 指定该menu的名称
    :parent -指定一个顶级菜单
    :if -指定一个条件
    :priority - 默认为10,在全局导航栏上的位置

    添加自定义的menu

    config/initializers/active_admin.rb

      config.namespace :admin do |admin|
        admin.build_menu do |menu|
          menu.add label: "The Application", url: "/", priority: 0
    
          menu.add label: "Sites" do |sites|
            sites.add label: "Google",
                      url: "http://google.com",
                      html_options: { target: :blank }
            sites.add label: "Github",
                      url: "http://github.com"
          end
        end
      end
    
    自定义resource的index页面

    提供4中样式,Block,Blog,Grid,Table,一般我们用的是table,也是默认的样式。这里只介绍table.

    默认的,index页面会展示对应的model的所以字段,可供查看,修改,删除。

    如果要自定义字段,可以用:

    index do
      selectable_column
      column :title
      column "My custom name" ,:name
    end
    

    这些自定的字段要被index包裹
    selectable_column 显示勾选框,用于批量操作
    column 显示什么字段,该字段必须是model的字段名,可以给这个字段另取一个别名

    还可以根据条件设置特别的row样式,这个some_style样式放在app/asset/stylesheets/active_admin.scss中

      index(row_class: ->item { 'some_style' if item.is_show }) do
      end
    
    自定义Actions

    如果要给resource设置链接到查看,修改,删除这几个按钮,可以用actions方法

    index do
      selectable_column
      column :title
      actions
    end
    

    也可以增加自定的链接

    index do
      selectable_column
      column :title
      actions do |post|
        item "Preview", admin_preview_post_path(post), class: "member_link"
      end
    end
    

    获取重新设置链接

    index do
      column :title
      actions defaults: false do |post|
        item "View", admin_post_path(post)
      end
    end
    
    Form(model的创建或者修改表单)

    默认的表单是展示所有的字段

    form do |f|
      f.semantic_errors # shows errors on :base
      f.inputs          # builds an input field for every attribute
      f.actions         # adds the 'Submit' and 'Cancel' buttons
    end
    

    示例:

    form title: 'A custom title' do |f|
        inputs 'Details' do
          input :part1
          input :part2, label: "Publish Post At"
          li "Created at #{f.object.created_at}" unless f.object.new_record?
          input :part3
        end
        panel 'Markup' do
          "The following can be used in the content below..."
        end
        inputs 'Content', :part3
        para "Press cancel to return to the list without saving."
        input :created_at, as: :datepicker,
                datepicker_options: {
                    min_date: "2013-10-8",
                    max_date: "+3D"
                }
        actions
      end
    

    对应的图示:


    图片.png
    增加action的按钮

    link_to path 中的path指定的方式是

    1. 命名空间_model的复数形式_path
    2. controller名_方法名_path
      action_item only: :index do
        link_to '刷新疑似状态', admin_app_oral_memories_path, notice: "刷新成功"
      end
    
    增加batch操作按钮
      batch_action "封禁" do |selection|
        
      end
    

    Index Filter 过滤器

     filter :name, label: "name"
    

    一般的,通过上面这个形式就好了,activeadmin会自动判断其类型。

    或者有另个情况,有个关联表。

    filter :location_id, label: "地点", as: :select, collection: AppExamLocation.all.map{|x| [x.location,x.id]}
    

    通过:as可以指定类型,提供这一下这几种类型

    
        :string - A drop down for selecting “Contains”, “Equals”, “Starts with”, “Ends with” and an input for a value.
        :date_range - A start and end date field with calendar inputs
        :numeric - A drop down for selecting “Equal To”, “Greater Than” or “Less Than” and an input for a value.
        :select - A drop down which filters based on a selected item in a collection or all.
        :check_boxes - A list of check boxes users can turn on and off to filter
    
    

    相关文章

      网友评论

          本文标题:Ruby&Rails---ActiveAdmin快速建立属后台

          本文链接:https://www.haomeiwen.com/subject/kjazbxtx.html