2012-07-22 25 views
9

Estoy trabajando con ActiveAdmin y necesito hacer personalizaciones para algunas vistas y he encontrado un par de escenarios que creo que estoy haciendo mal.ActiveAdmin mostrar vista predeterminada contenido

Agrego una tabla adicional a una vista de programa (comentarios en Publicaciones). Esto requiere que reescriba toda la tabla de atributos y luego agregue mi panel. ¿Hay alguna manera de personalizar vistas sin perder el contenido predeterminado?

También me gustaría agregar una tabla de elementos asociados en la vista de la demostración que no necesita ser personalizada ¿hay alguna manera de incluir la historia predeterminada que normalmente estaría en la vista de índice con acciones predeterminadas y paginación?

+0

Esta pregunta se carece de detalles como el código existente de que la pregunta no ha intentado, mejor abrir uno nuevo – prusswan

+0

@Cristian : Hubiera sido mejor abrir una nueva pregunta para esto, en lugar de editar la de esta persona. –

+0

@Ryan Solo he agregado una etiqueta, de lo contrario tengo exactamente la misma pregunta. – Cristian

Respuesta

24

Después de cavar en el source code of Active Admin, he encontrado una manera de arreglar esto

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

Por supuesto, esto es indocumentado y tal vez considerado como un corte, pero a menos que exista alguna otra solución, funciona.

Nota: Para hacer esto en la acción de formulario (nueva y editar):

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

    f.actions 
    end 
+1

¡Esto es genial! Sin embargo, su solución alternativa "nueva y de edición" solo funciona si está insertando * entradas * no estándar. ¿Qué sucede si quiere agregar una etiqueta div o de párrafo? Desafortunadamente, no podrás hacer esto con la DSL de ActiveAdmin (hasta donde yo sé) ... pero puedes insertar HTML arbitrario a través de formtastic. ** [Aquí se muestra cómo] (http://stackoverflow.com/questions/10524012/insert-a-non-input-row-into-a-formtasic-form) **. – mdpatrick

2

Un par de áreas de la documentación te pueden ayudar:

  1. Ver Customize the Show Page, Customizing the Index Page, Customizing the Form, y Custom Pages. Un ejemplo de la personalización de una pantalla de proyección de:

    ActiveAdmin.register Ad do 
        show do |ad| 
        default_main_content 
        h3 ad.title 
        end 
    end 
    
  2. Ver Elementos de acción personalizado en la sección Custom Controller Actions de la documentación. Un ejemplo:

    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 no existe en la documentación más, sin embargo, funciona bien.

+0

Cualquier cosa que especifique en el bloque 'show do ...' está reemplazando todas las acciones predeterminadas que Active Admin construyó automáticamente. Entonces, si solo quieres agregar un campo adicional, estás atascado para hacer toda la página desde cero ... – Cristian

6

En lugar de utilizar default_main_content, usted podría también acaba de bucle a través de las columnas en el modelo de esta manera:

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 
Cuestiones relacionadas