2012-01-02 30 views
10

Tôi đang sử dụng ActiveAdmin và Formtastic.Rails 3. Điều kiện hiển thị các trường với Formtastic

Tôi có biểu mẫu hóa đơn có menu thả xuống của các lô hàng.

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 

Tôi chỉ muốn hiển thị menu chọn cho các lô hàng nếu biểu mẫu là biểu mẫu Hóa đơn mới.

Tôi không muốn hiển thị các lô hàng thả xuống menu chọn nếu biểu mẫu là biểu mẫu chỉnh sửa. Vì vậy, nếu biểu mẫu là biểu mẫu chỉnh sửa, biểu mẫu sẽ không bị thay đổi.

Tôi đã suy nghĩ về làm một cái gì đó giống như

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

nhưng tôi nhận được một lỗi DSL.

+1

Off đỉnh đầu của tôi, làm thế nào về 'trừ khi f.object.persisted' –

+0

Đã cùng một vấn đề, kèm theo không? trường trong một khối 'if object.persisted?' đã giúp. cảm ơn. – pduersteler

Trả lời

12

thử

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

Câu hỏi (một phần) đã trả lời trước đây: Accessing object of form in formtastic

Các vấn đề liên quan