2012-04-05 12 views
12

He configurado rails_admin para la interfaz de administración de mi sitio.Rails Admin modificar lista/mostrar vista para agregar columna nueva/personalizada

Para uno de los modelos, quiero mostrar una columna adicional.

dicen que tengo atributos de nombre, teléfono, correo electrónico, URL de imagen, rango, etc. en mi Modelo (por ejemplo, Estudiante). Luego tengo que mostrar columnas: Nombre | Rank | Vista previa (columna adicional)

En la columna de vista previa quiero mostrar algunos html renderizados en función de los atributos (correo electrónico, imagen, url, etc.) para cada 'estudiante'.

He encontrado la manera de incluir un parcial para editar/actualizar/crear para proporcionar campos/formularios según nuestro parcial. Pero la misma implementación de incluir parcial está fallando en list/show.

Entonces, ¿hay alguna manera de que pueda agregar el contenido parcial para mostrar contenido procesado, en la lista/mostrar vista para un modelo ...?

Editar: Código añadió

config.model Utility do 
    list do 
    field :code 
    field :priority 
    field :name 
    field :url 
    field :phone 
    field :logo 
    field :content 
    sort_by :priority 
    items_per_page 100 
    end 
end 

Esto se muestra en las columnas siguientes rails_admin

Código | Prioridad | Nombre | Url | Teléfono | Logo | Contenido

lo que quiero es Código | Prioridad | Vista previa

en el que en la columna de vista previa quiero mostrar una representación HTML como contenido:

blah.html (por ejemplo, sólo para html, por ejemplo, aquí quiero rendir de una manera que se muestra en uno de páginas, por lo que es presentable para la vista de administración demasiado)

<div class="blah"> 
    <%=util.name%> <%=util.phone%> <%=util.logo%> #usage with proper divs/tags/rendering 
</div > 
+0

Por favor, sea más concreto. Muestra un código –

+0

He agregado el código y el requisito detallado especificado. –

Respuesta

21
config.model Utility do 
    configure :preview do 
    pretty_value do 
     util = bindings[:object] 
     %{<div class="blah"> 
      #{util.name} #{util.phone} #{util.logo} 
     </div >} 
    end 
    children_fields [:name, :phone, :logo] # will be used for searching/filtering, first field will be used for sorting 
    read_only true # won't be editable in forms (alternatively, hide it in edit section) 
    end 



    list do 
    field :code 
    field :priority 
    field :preview 
    end 

    show do 
    field :code 
    field :priority 
    field :preview 
    end 

    # other sections will show all fields 
end 

Resumen:

Mostrar/li st no use parciales para la salida. El último punto primordial es pretty_value.

+0

¿Qué pasa si la "vista previa" debe incluir algunos datos de algún Modelo belongs_to? Digamos Payout.Account.Currency.code? Usé "% {# {payout.account.currency.code}}" en lugar de "# {util.name} # {util.phone} # {util.logo}" y funciona bien para mostrar, pero puedo " t obtener clasificación en el funcionamiento de 'código'. ¿Cómo hacer que children_fields trabaje en campos de modelos asociados? – Zelid

+1

Esto no funciona para mí, consulte mi respuesta a continuación – Evan

+0

Esto funcionará, pero debe agregar un método en el modelo de utilidad, obtener una vista previa y devolver el valor que desee. – SKR

7

Rails Admin llama a estos tipos de campos "virtuales". La forma más fácil es hacer un método del modelo, y luego se refieren a ella en su lista/espectáculo:

class ModelName < ActiveRecord::Base 

    def invite_link 
    %{<a href="http://site.com/#{self.uid}">invite link</a>}.html_safe 
    end 

    rails_admin do 
    configure :invite_link do 
     visible false # so it's not on new/edit 
    end 

    list do 
     field :name 
     field :invite_link 
    end 

    show do 
     field :name 
     field :invite_link 
    end 
    end 
end 
+0

Aunque esto funcionaría, es mejor evitar poner esta lógica de vista en el modelo. – hcarreras

-1
class Utility < ActiveRecord::Base 
    def preview 
    name 
    end 
end 

config.model Utility do 
    configure :preview do 
    pretty_value do 
     util = bindings[:object] 
     %{<div class="blah"> 
      #{util.name} #{util.phone} #{util.logo} 
     </div >} 
    end 
    children_fields [:name, :phone, :logo] # will be used for searching/filtering, first field will be used for sorting 
    read_only true # won't be editable in forms (alternatively, hide it in edit section) 
    end 



    list do 
    field :code 
    field :priority 
    field :preview 
    end 

    show do 
    field :code 
    field :priority 
    field :preview 
    end 

    # other sections will show all fields 
end 
+0

Desde el método de vista previa, devuelve cualquier valor no nulo. – SKR

-1
class ModelName < ActiveRecord::Base 
    rails_admin do 
    list do 
     field :job_title 
     field :required_experiance 
     field :salary 
     field :technical_skills 
     field :non_technical_skills  
    end 

    create do 
     field :job_title, :enum do 
     help 'Please select Job Title' 
     enum do 
      ['Business Analyst', 'Trainee Business Analyst', 'Mobile/Web Developer', 
      'iOS Developer', 'Graphic Designer', 'System Administrator', 'Content Writer'] 
     end 
     end 

     field :job_type do 
     help 'e.g. Developer, Management' 
     end 

     field :undergraduate_degree, :enum do 
     help 'Please select UG Degree' 
     enum do 
      [ 'BE', 'BCA', 'B.Tech','BCs', 'BSc', 'BBA', 'BA', 'BCom', 'BSL'] 
     end 
     end 

     field :postgraduate_degree, :enum do 
     help 'Please select PG Degree' 
     enum do 
      [ 'ME', 'MCA', 'M.Tech', 'MCs', 'MSc', 'MBA', 'MCM', 'MMM', 'MA', 'MCom'] 
     end 
     end 

     field :required_experiance, :enum do 
     help 'Please select Year' 
     enum do 
      [ 'Select Year', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] 
     end 
    end 
    end 
end 
Cuestiones relacionadas