RailsAdmin如何實現自定義操做

前言

作過Ruby開發或者更準確的說Ruby on Rails開發的同窗,對RailsAdmin必定不會陌生。RailsAdmin能夠快速的幫助您構建後臺管理系統。豐富的gem集成以及便捷的搭建使得RailsAdmin成爲web開發中必不可少的組成部分。另外經過RailsAdmin你也能夠很是強烈的感覺到敏捷開發的魅力所在,以及如何快速的幫助客戶解決問題,快速搭建原型系統,知足客戶需求。html

RailsAdmin當然已經很是的便捷,但有時不能知足咱們的需求,此時就須要咱們自定義一些操做,擴展RailsAdmin的功能。前端

本文主要介紹在RailsAdmin中如何自定義操做(custom action),因爲國內ruby及rails中文資料不是特別豐富,若是您從事ruby開發,那麼本文可能對您會有必定的幫助。git

整體思路

對於教程,我我的比較傾向的一種思路是,先介紹整體流程,讓用戶對其有個總體印象,而後詳細的介紹每一步。這種方式使得用戶可以很是輕鬆的接受,遇到問題若是出現問題也能很好的定位問題出如今哪一階段。github

咱們如何在RailsAdmin中實現自定義操做呢? 主要有如下幾個關鍵步驟:web

  • 定義和實現咱們的操做並註冊到RailsAdmin,讓RailsAdmin可以知道該操做的存在;
  • 定義該操做的前端顯示頁面;
  • 在RailsAdmin配置文件中,使用該操做;

經過上面的三個關鍵操做就能夠完成咱們的自定義操做了。接下來咱們將介紹每一步的具體實現細節。算法

如下描述將基於下述基本約定:shell

  • 當前開發目錄爲ROOT;
  • 自定義操做名稱爲demo;

本文咱們實現的自定義操做demo達到的目標是:在member scope中添加demo action,點擊demo,前端顯示'hello,world'。編程

step0

在Rails開發中,無時無刻不體現着「約定優於配置」。那麼咱們自定義操做應該放在哪兒呢?文件如何命名?答案就是以下所示: 文件路徑爲ROOT/lib/rails_admin/; 文件的名稱即爲操做名稱即demo.rb;ruby

因此接下來咱們將在該路徑建立咱們的自定義操做文件。app

touch ROOT/lib/rails_admin/demo.rb

接下來咱們將介紹一個很是重要的概念就是action scope。你的操做應用到什麼地方? RailsAdmin中action scope主要有三種,分別是:root, collection, member。

  • root顧名思義就是根操做,和dashboard處於一個層級;
  • collection 針對記錄集合的操做;
  • member 針對某條具體的記錄的操做;

本文咱們自定義操做的scope就是collection。接下來咱們就具體介紹自定義操做的實現。

require 'rails_admin/config/actions/base'

module RailsAdmin
  class Demo < RailsAdmin::Config::Actions::Base    #Demo操做繼承Base
    RailsAdmin::Config::Actions.register(self)      #RailsAdmin中註冊demo操做

    register_instance_option :collection do             #設置其action scope爲member
      true
    end

  end
end

step1

咱們在什麼地方定義咱們的前端顯示文件?答案就是: ROOT/app/view/rails_admin/main/demo.html.erb 咱們的前端模板可使用erb, haml, slim等,至於模板語言如何使用,這並不是本文描述的重點。 因此咱們的前端文件顯示很是的簡單,直接打印"hello,world"便可。。

<!-- File: demo.html.erb -->
<p> hello, world! </p>

step2

至此,咱們的自定義操做的定義,以及前端顯示都已經完成,接下來就是如何使用該自定義操做了。

咱們打開ROOT/config/initializers/rails_admin.rb文件。

  • 引入咱們的自定義操做文件;
  • 在哪一個model中使用該操做;

如何引入?

require 'rails_admin/demo'

如何使用demo action?

咱們但願demo操做只應用於User Model中,因此在config.actions中配置。

config.actions do
    demo do
        only 'User'
    end
end

總結

本文主要介紹瞭如何在RailsAdmin中建立自定義操做,先從整體上描述了大體思路,而後逐步的介紹其實現細節。RailsAdmin已經成爲web開發中必不可少的組成部分,經過自定義操做擴展其功能已經是不可避免,因此本文具備必定的參考借鑑價值。

沒有rails環境怎麼辦?如何快速的體驗本文的一些操做?答案就在這裏:http://my.oschina.net/gschen/blog/346322,該博客介紹瞭如何快速的搭建你的rails開發環境。

本文介紹的只是簡單的自定義操做,能夠幫助您快速的上手,後續博客將逐步深刻的介紹更多的自定義操做用法。

代碼

https://github.com/gschen/rails_admin_custom_action_demo

引用

若是您對算法或編程感興趣,歡迎掃描下方二維碼並關注公衆號「算法與編程之美」,和您一塊兒探索算法和編程的神祕之處,給您不同的解題分析思路。 輸入圖片說明

相關文章
相關標籤/搜索