2012-10-03 13 views
16

Tengo un formulario de edición en Active Admin. Necesito un campo como de solo lectura.Cómo mostrar solo el valor en la página de edición en Active Admin

Mi página actual edición es como

enter image description here

necesito el aspecto página como esta

enter image description here

¿Cómo se puede hacer esto. Mi código para la página de formulario de edición es como

form :html => { :enctype => "multipart/form-data" } do |f| 
     f.inputs "Users" do 
     f.input :device, :label => 'Device', :as => :select, :collection => DEVICE, :include_blank => false 
     f.input :current_address, :label => 'Current Address', :as => :string 
     end 
    end 

Por favor ayuda.

+0

¿Hay algún avance en este tema? – Fivell

+0

En realidad, lo que hice fue agregar disabled => true, veo el cuadro de texto deshabilitado. Diseñé el fondo del cuadro de texto para que coincida con el color de la página. Entonces parece lo que necesito.pero esa no es la forma correcta :( –

+0

Es una pena, podría ser una buena opción – Fivell

Respuesta

2

Intente agregar , :disabled => true para el campo de entrada de dirección.

+0

cuando agrego: disabled => ture Puedo ver el cuadro de texto allí, y no será editable. En realidad, no quiero ningún cuadro de texto allí. –

34

Como dijo Alex, configúrelo como deshabilitado. Luego puede usar css para obtener la imagen que desea, si puede vivir con la semántica de eso.

La sintaxis fue ligeramente diferente para mí para hacer que esto funcione.

en su formulario de administración:

f.input :finish_position, input_html: { disabled: true } 

en su CSS active_admin.css

input[disabled="disabled"], 
input[disabled] { 
    background-color: #F4F4F4; 
    border: 0px solid #F4F4F4 !important; 
} 
+0

Gracias por la sugerencia! –

+0

THX mucho @ Haré un pequeño cambio en el CSS para enfatizar la idea de un "campo" desactivado: he sustituido 'border: 0px solid # F4F4F4! Important;' con 'cursor: no permitido; ' – microspino

9

Para una definición de formulario más limpio dentro de su ActiveAdmin.register {} bloque que puede también querer definir una tipo de entrada "readonly" para ser utilizado dentro del administrador activo usando formtastic:

La sintaxis del bloque de formulario es para activeadmin versión 1.0.0.pre en 0becbef0918a.

# app/admin/inputs/readonly_input.rb 

class ReadonlyInput < Formtastic::Inputs::StringInput 
    def to_html 
    input_wrapping do 
     label_html << 
     template.content_tag('div', @object.send(method)) 
    end 
    end 
end 

# app/admin/your_model.rb 

ActiveAdmin.register YourModel do 
    # ... 

    form do |f| 
    # ... 

    input :current_address, as: :readonly 

    # ... 
    end 
end 
+0

¿Esto enviará el valor al controlador cuando se envía el formulario? – harshitpthk

+0

No, no lo hará, no estoy seguro de por qué lo necesita, ya que teóricamente muestra el valor del campo ya guardado. – Whatcould

2

que estaba enfrentando el mismo problema y trató usando :disabled pero no resolvió mi problema, ya que quería field valor para ser incluido en params objeto mientras que le envía al servidor. Cuando marca form input como :input_html => {:disabled => true}, no incluye este valor de campo en params. Así, en lugar de eso utiliza :input_html => {:readonly => true} que resolvió mis dos problemas:

  1. no permite al usuario edit
  2. incluye el valor en params

espero que esto ayudará.

+0

': input_html => {: disabled => true} ', no incluye este valor de campo en params –

0

El truco es usar "objeto". Aquí es cómo debe codificarlo:

form :html => { :enctype => "multipart/form-data" } do |f| 
    f.inputs "Users" do 
    f.input :device, :label => 'Device', :as => :select, :collection => DEVICE, :include_blank => false 
    f.label :current_address, f.object.current_address 
    end 
end 
0

¿Qué le parece esto?

form :html => { :enctype => "multipart/form-data" } do |f| 
    f.inputs "Users" do 
    f.input :device, :label => 'Device', :as => :select, :collection => DEVICE, :include_blank => false 
    f.li do 
     f.label :current_address 
     f.span f.object.current_address 
    end 
    end 
end 
Cuestiones relacionadas