2012-07-22 12 views
9

Sto lavorando con ActiveAdmin e ho bisogno di effettuare personalizzazioni per alcune visualizzazioni e ho trovato un paio di scenari che sento che sto sbagliando.ActiveAdmin visualizza il contenuto predefinito della vista

Sto aggiungendo una tabella aggiuntiva a una vista di visualizzazione (commenti su Post). Ciò mi richiede di riscrivere l'intera tabella degli attributi e quindi aggiungere il mio pannello. C'è un modo per personalizzare le visualizzazioni senza perdere il contenuto predefinito?

Vorrei anche aggiungere una tabella di elementi associati nella vista dello spettacolo che non ha bisogno di essere personalizzati c'è un modo per includere il racconto predefinito che normalmente sarebbe nella vista indice con azioni e paging predefiniti?

+0

Questa domanda è carente specifiche come il codice esistente che richiedente ha provato, meglio aprirne uno nuovo – prusswan

+0

@Cristian : Sarebbe stato meglio aprire una nuova domanda per questo, piuttosto che modificare quella di questa persona. –

+0

@Ryan Ho solo aggiunto un tag, altrimenti ho esattamente la stessa domanda. – Cristian

risposta

24

Dopo aver scavato nel source code of Active Admin, ho trovato un modo per rattoppare questa

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

Naturalmente questo è documentato e forse considerato un hack, ma a meno che non esista alcuna altra soluzione, funziona.

Nota: per fare questo nel form action (nuovi e di modifica):

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

    f.actions 
    end 
+1

Questo è fantastico! Tuttavia, la soluzione "nuova e modifica" funziona solo se si inseriscono input * non standard *. Cosa succede se si desidera aggiungere un tag div o paragrafo? Sfortunatamente, non sarai in grado di farlo con ActiveLink DSL (per quanto ne so) ... ma puoi inserire codice HTML arbitrario tramite formtastic. ** [Ecco come] (http://stackoverflow.com/questions/10524012/insert-a-non-input-row-into-a-formtasic-form) **. – mdpatrick

2

Un paio di aree della documentazione potrebbe aiutare:

  1. Vedi Customize the Show Page, Customizing the Index Page, Customizing the Form, e Custom Pages. Un esempio di personalizzazione di un'esposizione dello schermo:

    ActiveAdmin.register Ad do 
        show do |ad| 
        default_main_content 
        h3 ad.title 
        end 
    end 
    
  2. Vedere azioni personalizzate nella sezione Custom Controller Actions della documentazione. Un esempio:

    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 non esiste nella documentazione più, ma funziona benissimo.

+0

Tutto ciò che viene specificato nel blocco 'show do ...' sta sostituendo tutte le azioni predefinite che Active Admin ha creato automaticamente. Quindi, se vuoi semplicemente aggiungere un campo in più, sei bloccato a fare l'intera pagina da zero ... – Cristian

6

Invece di usare default_main_content, si potrebbe anche solo ciclo attraverso le colonne del modello in questo modo:

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 
Problemi correlati