2012-01-02 22 views
10

Estoy usando ActiveAdmin y Formtastic.Rails 3. Condicionalmente mostrar campos con Formtastic

Tengo un formulario de factura que tiene un menú desplegable de envíos.

form do |f| 
    f.inputs "Shipment Details" do  
    f.input :shipment_id, :label => "Shipment", :as => :select, :collection => Shipment.find(invoiceless_shipments, :order => "file_number", :select => "id, file_number").map{|v| [v.file_number, v.id] } 
    f.input :issued_at, :label => "Date", :as => :datepicker 
    ... more fields ... 
end 

Solo quiero mostrar el menú de selección para envíos si el formulario es un formulario de Nueva factura.

No deseo mostrar el menú desplegable de envíos si el formulario es un formulario de edición. Entonces, si el formulario es un formulario de edición, no se cambiará.

Estaba pensando en hacer algo como

if params[:action] != 'edit' 
    f.input :shipment_id, :label => "Shipment", :as => :select... 
end 

pero me da un error de DSL.

+1

De la parte superior de mi cabeza, ¿qué hay de '' menos f.object.persisted –

+0

tenía el mismo problema, que encierra el? campo en un bloque 'if object.persisted?' ayudado. Gracias. – pduersteler

Respuesta

12

tratar

form do |f| 
    f.inputs "Shipment Details" do  
    if f.object.new_record? 
     f.input :shipment_id, :label => "Shipment", :as => :select... 
    end 
    ... 
    end 
end 

Pregunta (parcialmente) respondió anteriormente aquí: Accessing object of form in formtastic

Cuestiones relacionadas