Ruby&Rails---ActiveAdmin快速建立屬后臺

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

安裝

devise是用于登錄驗證

gem 'activeadmin'
gem 'devise'

由于我們使用devise浴滴,所以我們需要運行這個構(gòu)造器

rails g active_admin:install

執(zhí)行后會創(chuàng)建這些文件

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

終端執(zhí)行

bin/rails db:migrate

activeAdmin 會在seeds.rb中生成默認用戶的創(chuàng)建方式,終端執(zhí)行下面命令來生成后臺用戶

bin/rails db:seed

然后就可以訪問了,會讓你登錄纬纪,就用剛生成的用戶的信息

http://192.168.20.106:3000/admin/
如果要關(guān)閉用戶登錄驗證功能,可以用:

initializer/active_admin

  config.current_user_method = false
  config.authentication_method = false
Comment

因為不需要comment(注解)這個功能,所以在initializer中的active_admin中關(guān)閉這個功能
config.comments = false

Utility Navigation(導(dǎo)航)

在右上角有一些快速導(dǎo)航按鈕浦妄,默認的有兩個,一個是當(dāng)前的admin用戶见芹,另外一個是登出按鈕剂娄,我們可以增加導(dǎo)航按鈕

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
創(chuàng)建Resources

eg: Post是我的一個model

bin/rails  g active_admin:resource Post

執(zhí)行后會生成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默認都會在全局導(dǎo)航欄上把鉴,如果要禁止一個resource出現(xiàn)在全局導(dǎo)航欄上,我們可以用:

ActiveAdmin.register Post do
  menu false
end
  menu label: "自定義標(biāo)題",priority: 1

menu有4個選項可以用:
:label - 指定該menu的名稱
:parent -指定一個頂級菜單
:if -指定一個條件
:priority - 默認為10儿咱,在全局導(dǎo)航欄上的位置

添加自定義的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頁面會展示對應(yīng)的model的所以字段,可供查看钳宪,修改揭北,刪除。

如果要自定義字段吏颖,可以用:

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

這些自定的字段要被index包裹
selectable_column 顯示勾選框搔体,用于批量操作
column 顯示什么字段,該字段必須是model的字段名半醉,可以給這個字段另取一個別名

還可以根據(jù)條件設(shè)置特別的row樣式疚俱,這個some_style樣式放在app/asset/stylesheets/active_admin.scss中

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

如果要給resource設(shè)置鏈接到查看,修改缩多,刪除這幾個按鈕呆奕,可以用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

獲取重新設(shè)置鏈接

index do
  column :title
  actions defaults: false do |post|
    item "View", admin_post_path(post)
  end
end
Form(model的創(chuàng)建或者修改表單)

默認的表單是展示所有的字段

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

對應(yīng)的圖示:


圖片.png
增加action的按鈕

link_to path 中的path指定的方式是

  1. 命名空間_model的復(fù)數(shù)形式_path
  2. controller名_方法名_path
  action_item only: :index do
    link_to '刷新疑似狀態(tài)', admin_app_oral_memories_path, notice: "刷新成功"
  end
增加batch操作按鈕
  batch_action "封禁" do |selection|
    
  end

Index Filter 過濾器

 filter :name, label: "name"

一般的养晋,通過上面這個形式就好了,activeadmin會自動判斷其類型梁钾。

或者有另個情況绳泉,有個關(guān)聯(lián)表。

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末圈纺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子麦射,更是在濱河造成了極大的恐慌蛾娶,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件潜秋,死亡現(xiàn)場離奇詭異蛔琅,居然都是意外死亡,警方通過查閱死者的電腦和手機峻呛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門罗售,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钩述,你說我怎么就攤上這事寨躁。” “怎么了牙勘?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵职恳,是天一觀的道長。 經(jīng)常有香客問我方面,道長放钦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任恭金,我火速辦了婚禮操禀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘横腿。我一直安慰自己颓屑,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布耿焊。 她就那樣靜靜地躺著揪惦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搀别。 梳的紋絲不亂的頭發(fā)上丹擎,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天,我揣著相機與錄音,去河邊找鬼蒂培。 笑死再愈,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的护戳。 我是一名探鬼主播翎冲,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼媳荒!你這毒婦竟也來了抗悍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钳枕,失蹤者是張志新(化名)和其女友劉穎缴渊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鱼炒,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡衔沼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了昔瞧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片指蚁。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖自晰,靈堂內(nèi)的尸體忽然破棺而出凝化,到底是詐尸還是另有隱情,我是刑警寧澤酬荞,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布搓劫,位于F島的核電站,受9級特大地震影響袜蚕,放射性物質(zhì)發(fā)生泄漏糟把。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一牲剃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧雄可,春花似錦凿傅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至虐急,卻和暖如春箱残,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工被辑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留燎悍,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓盼理,卻偏偏與公主長得像谈山,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宏怔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355