2012-01-02 18 views
10

के साथ फ़ील्ड दिखाएं मैं ActiveAdmin और Formtastic का उपयोग कर रहा हूं।रेल 3. सशर्त रूप से फॉर्मेटास्टिक

मेरे पास एक चालान फ़ॉर्म है जिसमें शिपमेंट का ड्रॉप डाउन मेनू है।

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 

यदि फॉर्म एक नया चालान फॉर्म है तो मैं केवल शिपमेंट के लिए चयन मेनू प्रदर्शित करना चाहता हूं।

यदि फॉर्म एक संपादन फ़ॉर्म है तो मैं शिपमेंट को ड्रॉप डाउन मेनू को प्रदर्शित नहीं करना चाहता हूं। तो यदि फॉर्म एक संपादन फ़ॉर्म है, तो यह बदला नहीं जाएगा।

मैं

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

की तरह कुछ करने के बारे में सोच रहा था लेकिन मैं एक डीएसएल त्रुटि मिलती है।

+1

मेरे सिर के ऊपर, कैसे 'के बारे में जब तक f.object.persisted' –

+0

एक ही समस्या थी बंद enclosing? 'if object.persisted' में फ़ील्ड? 'ब्लॉक मदद की। धन्यवाद। – pduersteler

उत्तर

12

कोशिश

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

प्रश्न (आंशिक रूप से) पहले यहां उत्तर:, Accessing object of form in formtastic

संबंधित मुद्दे