作過Ruby開發或者更準確的說Ruby on Rails開發的同窗,對RailsAdmin必定不會陌生。RailsAdmin能夠快速的幫助您構建後臺管理系統。豐富的gem集成以及便捷的搭建使得RailsAdmin成爲web開發中必不可少的組成部分。另外經過RailsAdmin你也能夠很是強烈的感覺到敏捷開發的魅力所在,以及如何快速的幫助客戶解決問題,快速搭建原型系統,知足客戶需求。html
RailsAdmin當然已經很是的便捷,但有時不能知足咱們的需求,此時就須要咱們自定義一些操做,擴展RailsAdmin的功能。前端
本文主要介紹在RailsAdmin中如何自定義操做(custom action),因爲國內ruby及rails中文資料不是特別豐富,若是您從事ruby開發,那麼本文可能對您會有必定的幫助。git
對於教程,我我的比較傾向的一種思路是,先介紹整體流程,讓用戶對其有個總體印象,而後詳細的介紹每一步。這種方式使得用戶可以很是輕鬆的接受,遇到問題若是出現問題也能很好的定位問題出如今哪一階段。github
咱們如何在RailsAdmin中實現自定義操做呢? 主要有如下幾個關鍵步驟:web
經過上面的三個關鍵操做就能夠完成咱們的自定義操做了。接下來咱們將介紹每一步的具體實現細節。算法
如下描述將基於下述基本約定:shell
本文咱們實現的自定義操做demo達到的目標是:在member scope中添加demo action,點擊demo,前端顯示'hello,world'。編程
在Rails開發中,無時無刻不體現着「約定優於配置」。那麼咱們自定義操做應該放在哪兒呢?文件如何命名?答案就是以下所示: 文件路徑爲ROOT/lib/rails_admin/; 文件的名稱即爲操做名稱即demo.rb;ruby
因此接下來咱們將在該路徑建立咱們的自定義操做文件。app
touch ROOT/lib/rails_admin/demo.rb
接下來咱們將介紹一個很是重要的概念就是action scope。你的操做應用到什麼地方? RailsAdmin中action scope主要有三種,分別是:root, 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
咱們在什麼地方定義咱們的前端顯示文件?答案就是: ROOT/app/view/rails_admin/main/demo.html.erb 咱們的前端模板可使用erb, haml, slim等,至於模板語言如何使用,這並不是本文描述的重點。 因此咱們的前端文件顯示很是的簡單,直接打印"hello,world"便可。。
<!-- File: demo.html.erb --> <p> hello, world! </p>
至此,咱們的自定義操做的定義,以及前端顯示都已經完成,接下來就是如何使用該自定義操做了。
咱們打開ROOT/config/initializers/rails_admin.rb文件。
如何引入?
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
若是您對算法或編程感興趣,歡迎掃描下方二維碼並關注公衆號「算法與編程之美」,和您一塊兒探索算法和編程的神祕之處,給您不同的解題分析思路。