2013-05-14 61 views
22

目前我有User模型,它在user.rb中註冊爲ActiveAdmin的新資源。生成的頁面顯示所有使用示波器的用戶(all/journalists/startup_employees)。現在我想爲相同的資源和相同的作用域創建另一個頁面,但應該只有waiting字段設置爲true的記錄(並且上一頁應僅顯示:waiting => false)。我怎麼能這樣做?我知道我可以使用過濾器來做到這一點,但我需要兩個單獨的頁面,菜單中有兩個鏈接。兩頁同一資源 - ActiveAdmin

// SOLUTION

它比建議更容易(感謝你們!):

ActiveAdmin.register User, :as => 'Waitlist User' do 
    menu :label => "Waitlist" 

    controller do 
    def scoped_collection 
     User.where(:waitlist => true) 
    end 
    end 

    # code 

    scope :all 
    scope :journalists 
    scope :startup_employees 
end 

ActiveAdmin.register User do 
    controller do 
    def scoped_collection 
     User.where(:waitlist => false) 
    end 
    end 

    # code 

    scope :all 
    scope :journalists 
    scope :startup_employees 
end 
+1

看起來不錯! – James 2013-05-15 11:03:57

+0

這種情況下應該是什麼文件名 – Atul 2016-05-04 07:05:03

回答

1

你可以使用一個參數來區分的情況下,和渲染取決於不同的操作關於參數:

link_to users_path(:kind => 'waiting') 

,並在users_controller.rb

def index 
    if params[:kind]=='waiting' 
    @users= Users.where(:waiting => true) 
    render :action => 'waiting' and return 
    else 
    # do your other stuff 
    end 
end 

然後把你的新的,不同的頁面(部分)在應用程序/視圖/用戶/ waiting.html.erb

如果您想使用此不同的佈局頁面中添加布局參數來呈現:

render :action => 'waiting', :layout => 'other_layout' and return 
5

STI(單個表繼承)可用於創建同一表/父模型的多個「子資源」 Active admin

  1. 添加在用戶表中的「類型」列作爲一個字符串

  2. 一下添加到User模型,以反映等待字段類型字段

    after_commit {|i| update_attribute(:type, waiting ? "UserWaiting" : "UserNotWaiting")} 
    
  3. 創建新車型UserWaitingUserNotWaiting

    class UserWaiting < User 
    end 
    class UserNotWaiting < User 
    end 
    
  4. 創建Active Admin資源

    ActiveAdmin.register UserWaiting do 
    # .... 
    end 
    ActiveAdmin.register UserNotWaiting do 
    # .... 
    end 
    
  5. 可以在控制檯中運行首次同步

    User.all.each {|user| user.save} 
    

..............

另一種方法是跳過類型列(步驟1,2和5)並用範圍解決其餘的問題。

  1. 步驟3和第4段

  2. 然後創建範圍

    #model/user.rb 
    scope :waiting, where(:waiting => true) 
    scope :not_waiting, where(:waiting => false) 
    
  3. 作用域在Active Admin

    #admin/user.rb 
    scope :waiting, :default => true 
    
    #admin/user_not_waitings.rb 
    scope :not_waiting, :default => true 
    

只需確保其他範圍在這兩頁也過濾等待/不等待

相關問題