iT邦幫忙

DAY 22
0

從想法到快速實作的捷徑:Rails系列 第 22

[ Day 22 ] DIY實作後台功能

  • 分享至 

  • xImage
  •  

前面有提到,我們要讓任何人都可以註冊並且參與翻譯文章,

但是如果有人來亂貼廣告或是做了什麼壞壞的事呢?

沒錯,為了避免這種情形發生,

我們現在將要實作後台的功能。

功能非常的簡單,除了跟一般user一樣之外,

他多了可以讓文章發佈的功能,以及對所有文章都有編輯的權限。

(後面會再提到單對view做權限限制是不夠的,看不到不代表你碰不到,不急不急,之後會有一系列介紹cancancan)

所以今天要做的事情是:

  • 建造後台頁面
  • 讓管理者能發佈並且管理所有文章

Gem 介紹

  • Active Admin
  • Rails Admin

這兩個是大家常用來實做後台功能的gem,

優點是建制很快,但要客制化很困難,假如是不太重要的專案或是你認為調整這些東西很好玩,

那就用吧!

這裡我們將直接手動刻一個後台出來。

DIY一個後台

  • 這裡操作的是跟前提一樣的po文,也就是說他們會__共用一個資料庫__

  • 所以我們會用繼承的方式來做admin的post model

  • 這裡只要執行這行指令就可以幫我們生成所有需要的頁面:

    rails g scaffold admin/post --migration=false --parent=Post

Scaffold會幫我們從lib/template底下去產生頁面,parent代表會繼承自原本post的model,
而--migration = false則不會讓這個指令去生成migration,這樣就不會動到原本的資料庫了。

  • 頁面有了,再來就是新增routes了

只要加入一行就可以完工了

namespace :admin do
    resources :posts
end

現在就可以去後台看看啦!

不過你會發現前台的navbar還在,按一下上面的又會回到前台頁面去,

這時候我們必須做一個專門的layouts:

只要在app/views/layouts底下新增一個admin.html.erb頁面,

  <title>UnitedIssues</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>



<%= render partial: "common/flash" %>

<div class="container main">
  <%= yield %>
  <%= debug(params) if Rails.env.development? %>
</div>  

接著在剛剛的admin posts controller中加入layout 'admin',

就可以了!

參考資料:

http://guides.ruby-china.org/layouts_and_rendering.html

http://tonytonyjan.net/slides/2014-04-25-better-rails-backstage

長遠來看的話,維護起來真的方便很多,

而起比起直接用第三方的gem,這樣子能懂得的東西也會比較多,

一樣是個人喜好,在網路上看到大兜的slide受益良多,

一方面也是寫案子有感,

下一篇將介紹cancan來實做權限管理,否則現在的後台其實只要打個網址就進去了XD


上一篇
[ Day 21 ] 文章的分類功能 - (下)
下一篇
[ Day 23 ][ Dev ] 實作角色權限管理 - Part 1
系列文
從想法到快速實作的捷徑:Rails30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言