2012-07-22 12 views
9

Ich arbeite mit ActiveAdmin und muss Anpassungen an einigen Ansichten vornehmen und bin auf ein paar Szenarien gestoßen, die ich falsch gemacht habe.ActiveAdmin Anzeige Standardansicht Inhalt

Ich füge eine zusätzliche Tabelle zu einer Show-Ansicht hinzu (Kommentare zu Posts). Dazu muss ich die gesamte Attributtabelle neu schreiben und dann mein Panel hinzufügen. Gibt es eine Möglichkeit, Ansichten anzupassen, ohne den Standardinhalt zu verlieren?

Ich möchte auch eine Tabelle der zugehörigen Elemente in der Show-Ansicht hinzufügen, die nicht angepasst werden muss Gibt es eine Möglichkeit, die Standard-Tale, die normalerweise in der Indexansicht mit Standardaktionen und Paging wäre würde enthalten?

+0

Diese Frage Besonderheiten fehlt wie vorhandenen Code, dass Fragesteller hat versucht hat, besser zu öffnen ein neues – prusswan

+0

@Cristian : Es wäre besser gewesen, dafür eine neue Frage zu öffnen, anstatt diese zu bearbeiten. –

+0

@Ryan Ich habe nur ein Tag hinzugefügt, sonst habe ich genau die gleiche Frage. – Cristian

Antwort

24

Nachdem er in der source code of Active Admin graben, habe ich einen Weg gefunden, diese diese

show do 
    default_main_content 
    panel "Your Added Stuff" do 
     # Add stuff here 
    end 
    end 

Natürlich Patch nicht dokumentiert ist und vielleicht einen Hack betrachtet, aber es sei denn, eine andere Lösung vorhanden ist, funktioniert es.

Hinweis: Um dies zu tun, in der Form Aktion (neu und bearbeitet):

form do |f| 
    f.inputs 
    # Other inputs here 

    f.actions 
    end 
+1

Das ist großartig! Die Problemumgehung "neu und bearbeiten" funktioniert jedoch nur, wenn Sie nicht standardmäßige * Eingaben * einfügen. Was ist, wenn Sie ein div- oder Absatz-Tag hinzufügen möchten? Leider wird das mit dem ActiveAdmin DSL (soweit ich weiß) nicht möglich sein, aber man kann über formtastic beliebigen HTML einfügen. ** [So geht's] (http://stackoverflow.com/questions/10524012/insert-a-non-input-row-into-a-formtasic-form) **. – mdpatrick

2

Ein paar Bereiche der Dokumentation könnten Ihnen helfen:

  1. Siehe Customize the Show Page, Customizing the Index Page, Customizing the Form, und Custom Pages. Ein Beispiel eine Show Bildschirm des Anpassens:

    ActiveAdmin.register Ad do 
        show do |ad| 
        default_main_content 
        h3 ad.title 
        end 
    end 
    
  2. Siehe Artikel Custom Action im Custom Controller Actions Abschnitt der Dokumentation. Ein Beispiel:

    action_item :only => :show, :if => proc{ current_admin_user.super_admin? } do 
        "Only display this to super admins on the show screen" 
    end 
    

NBdefault_main_content existiert nicht in der Dokumentation nicht mehr, aber es funktioniert gut.

+0

Alles, was Sie im Block "show do ..." angeben, ersetzt alle Standardaktionen, die Active Admin automatisch erstellt hat. Wenn Sie also nur ein zusätzliches Feld hinzufügen möchten, müssen Sie die gesamte Seite von Grund auf neu erstellen ... – Cristian

6

Statt default_main_content verwenden, können Sie auch nur eine Schleife durch die Spalten auf dem Modell wie folgt:

ActiveAdmin.register Ad do 
    show do 
    attributes_table do 
     default_attribute_table_rows.each do |field| 
     row field 
     end 

     # Custom bits here 

    end 
    end 
end