2013-10-23 8 views
7

Ich verwende rails_admin in meiner App. Ich habe einige Bereiche auf meinen Modellen, folgendes Beispiel:Scopes als Filter in rails_admin

class User < ActiveRecord::Base 

    scope :unconfirmed, where('confirmed_at IS NULL') 

end 

Ist es möglich, in rails_admin zu erhalten Zugang zu diesem Anwendungsbereich als Filter? Wie Sie können in Active Admin. Zum Beispiel das Hinzufügen eines Buttons irgendwo im Benutzerbereich.

Dank

+5

Was möchten Sie tun? Genau so machst du es – MZaragoza

Antwort

2

Ich habe es geschafft, diese durch das Hinzufügen einer benutzerdefinierten rails_admin Aktion erfolgreich zu tun.

Weitere Details: https://github.com/sferik/rails_admin/wiki/Custom-action

Zum Beispiel:

# in lib/rails_admin/unconfirmed.rb 

require 'rails_admin/config/actions' 
require 'rails_admin/config/actions/base' 

module RailsAdminUnconfirmed 
end 

module RailsAdmin 
    module Config 
    module Actions 

     class Unconfirmed < RailsAdmin::Config::Actions::Base 
     RailsAdmin::Config::Actions.register(self) 

     register_instance_option :controller do 
      Proc.new do 
      @objects = User.unconfirmed 
      render "index" 
      end 
     end 

     register_instance_option :collection do 
      true 
     end 
     end 
    end 
    end 
end 

Der Schlüssel ist, dass es sich um eine 'Sammlung' Aktion ist. Dann sind Sie es zum rails_admin Setup hinzu:

# in config/initializers/rails_admin.rb 
# require File.join(Rails.root, "lib", "rails_admin", "unconfirmed") 

RailsAdmin.config do |config| 
    config.actions do 
    # root actions 
    dashboard 
    # collection actions 
    index 
    unconfirmed do 
     only 'User' 
    end 
    end 
    # snip! 
end 

Diese neue Aktion auf dem Indexstand des User-Modells angezeigt.