2011-09-16 115 views
7

我們有一個網站,我們有一個後臺管理界面和一個顯示我們信息的前臺。我們正在使用Devise來確保身份驗證。後臺管理系統安裝的Rails最佳實踐?

後端應允許我們的模型對象進行正常的CRUD類型編輯。視圖和佈局也與前端完全不同。在Rails 3中實現這一點的最佳實踐是什麼?

我們兩種方法是:

  1. 一個管理視圖文件夾房屋所有查看特定代碼,以及在控制器中的文件夾的房屋控制管理特定接入所有控制器的管理文件夾。
  2. 具有一組視圖和控制器的條件邏輯系統,用if語句檢查用戶是否處於管理模式。

哪個更值得推薦,或者如果有其他方法我們錯過了,請讓我知道。

回答

15

第一個解決方案是更好的,但是對於這些情況創建namespaces和最好的做法是與命名空間去的時候,你需要用戶現場管理區域之間的相關差異。瞭解更多關於它here

你的目錄結構應該是這樣的:

controllers/ 
    |--admin/ 
     |--posts_controller.rb 

在你的路由你把你需要到管理員命名空間的一切:

namespace :admin do 
    resources :posts, :comments 
end 

你的控制器應該有一個admin文件夾,並且管理區域中的控制器將如下所示:

class Admin::PostsController < ApplicationController 
end 

你也應該有一個admin夾在你的意見,你把各自的觀點:

views/ 
    |--admin/ 
     |--posts/ 
      |--index.html.erb 
      |--... 

您也可以命名空間的車型,但它取決於你的需求,這是件好事,當你需要有不同同名的模型。例如,如果您需要管理員用戶的不同表格,而普通用戶需要不同的表格。就個人而言,我不會使用模型命名空間,只是在非常合理的情況下。

第二種選擇我認爲會引起很多頭痛,你會在if語句中丟失,我根本不建議。