2012-10-03 7 views
16

Ho un modulo di modifica in Active Admin. Ho bisogno di un campo solo di sola lettura.Come visualizzare solo il valore nella pagina di modifica in Active Admin

La mia pagina di modifica corrente è come

enter image description here

ho bisogno l'aspetto pagina come questa

enter image description here

Come può questo essere fatto. Il mio codice per la pagina di modifica del modulo è come

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 

Please help.

+0

eventuali progressi in questo problema? – Fivell

+0

in realtà quello che ho fatto è stato aggiunto disabilitato => true, vedo la casella di testo disabilitata. Ho stilizzato lo sfondo della casella di testo per abbinare il colore della pagina. Quindi sembra quello di cui ho bisogno.( –

+0

È un peccato, potrebbe essere una buona opzione – Fivell

risposta

2

Prova ad aggiungere , :disabled => true per il campo di inserimento dell'indirizzo.

+0

quando aggiungo: disabilitato => ture Posso vedere la casella di testo lì, e non sarà modificabile.In realtà non voglio nessuna casella di testo lì. –

34

Come ha detto Alex, impostato su disattivato. Potresti quindi usare css per ottenere la grafica che volevi, se puoi vivere con la semantica di quello.

La sintassi era leggermente diversa per me per farlo funzionare.

nel modulo admin:

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

nel CSS active_admin.css

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

Grazie per il suggerimento! –

+0

THX molto @Will ho fatto una piccola modifica al css per enfatizzare l'idea di un "campo" disabilitato: ho sostituito 'border: 0px solid # F4F4F4! Important;' with 'cursor: non consentito; ' – microspino

9

Per una definizione di modulo più pulito all'interno della vostra ActiveAdmin.register {} blocco si può anche voler definire un tipo di input "readonly" da utilizzare all'interno dell'amministratore attivo utilizzando formtastic:

La sintassi del blocco di modulo è per activeadmin versione 1.0.0.pre a 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

invierà il valore al controller quando viene inviato il modulo? – harshitpthk

+0

No non lo farà, non è sicuro del motivo per cui, in teoria, mostra il valore già salvato del campo. – Whatcould

2

stavo affrontando lo stesso problema e provato ad utilizzare :disabled ma non ha risolto il mio problema come volevo field valore da inserire nel params oggetto durante l'invio al server. Quando si contrassegna un form input come :input_html => {:disabled => true}, non include questo valore di campo in params. Così, invece ho usato :input_html => {:readonly => true} che ha risolto entrambi i miei problemi:

  1. non consente all'utente di edit
  2. Include il valore in params

Spero che questo vi aiuterà.

+0

': input_html => {: disabled => true} ', non include questo valore di campo in params –

0

Il trucco è usare "oggetto". Ecco come dovresti 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

Che ne dici di questo?

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