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

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

对应的图示:


Ruby&Rails---ActiveAdmin快速建立属后台_第1张图片
图片.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快速建立属后台)