2011-03-11 12 views
8

मेरे पास फॉर्मों के बारे में एक प्रश्न है। मेरे पास एक मानक मानक रूप है जो एक शीर्षक और शरीर के साथ एक पोस्ट (मेरे ऐप में एक ईरपोर्ट कहा जाता है) बचाता है। तालिका में "प्रकाशित" फ़ील्ड भी है, जो बुलियन है। सहेजा गया ईरपोर्ट केवल सार्वजनिक साइट पर दिखाता है यदि यह फ़ील्ड सत्य पर सेट है, तो गलत होने के कारण गलत है।2 एक फॉर्म में बटन सबमिट करें

डिफ़ॉल्ट चेक बॉक्स की बजाय, मैं फ़ॉर्म के अंत में दो बटन प्रदर्शित करना चाहता हूं: "अभी प्रकाशित करें" बटन और "ड्राफ्ट के रूप में सहेजें" बटन। यदि उपयोगकर्ता पूर्व को दबाता है, तो प्रकाशित फ़ील्ड सत्य पर सेट हो जाएगा। अगर उत्तरार्द्ध, तो झूठी। PHP में, मैं अलग-अलग नाम मानों के साथ 2 सबमिट फ़ील्ड प्रदर्शित करता था, फिर निर्माण करने के लिए उचित SQL क्वेरी निर्धारित करने के लिए इनपुट को if if else else के साथ संभालता था। रेल में, मुझे लगता है कि मैं इस तर्क को उचित कार्रवाई के तहत नियंत्रक में रखूंगा, लेकिन मुझे यकीन नहीं है कि बटन के नाम या आईडी मानों का उपयोग कैसे किया जाए।

रिकॉर्ड के लिए, मैं फॉर्मेटास्टिक का उपयोग कर रहा हूं, लेकिन अगर कोई मुझे दिखा सकता है कि डिफ़ॉल्ट रेल फॉर्म टैग के साथ ऐसा कैसे किया जाए, तो यह भी ठीक है। यहां मेरे फॉर्म के लिए कोड है क्योंकि यह अभी खड़ा है:

<% semantic_form_for @ereport do |form| %> 

    <% form.inputs do %> 
    <%= form.input :title %> 
    <%= form.input :body %> 
    <% end %> 
    <% form.buttons do %> 
    <%= form.commit_button :label => "Publish Now" %> 
<%= form.commit_button :label => "Save as Draft" %> 
    <% end %> 
<% end %> 

सहायता के लिए अग्रिम धन्यवाद!

उत्तर

20

मैं के बारे में formtastic पता नहीं है, लेकिन साथ डिफ़ॉल्ट रेल बिल्डर के रूप में, आप इसे इस तरह कर सकता है:

<%= form.submit "Save with option A", :name => "save_option_a" %> 
<%= form.submit "Save with option B", :name => "save_option_b" %> 

फिर नियंत्रक में, आप उन तक पैरामीटर में चुन सकते हैं:

if params[:save_option_a] 
    # do stuff 
end 
@iddlefingers जवाब देने के लिए इसके अलावा में
+0

जानकारी के लिए धन्यवाद! यह बहुत अच्छा काम किया। – joshukraine

0

मुझे लगता है कि आपको jQuery का उपयोग करने की आवश्यकता है। आप बटन क्लिक ईवेंट को बाध्य कर सकते हैं और निर्दिष्ट स्थान के लिए फॉर्म जमा कर सकते हैं।

+0

बस इन दिनों jQuery सीखना शुरू करें, लेकिन मैं इसे ध्यान में रखूंगा। धन्यवाद! – joshukraine

1

, यहाँ आवेदन की लॉग के एक दृश्य है

Parameters: {"utf8"=>"✓", ..., "comentar"=>"Confirmar"} 
(विवरण के उद्देश्यों की वजह से कुछ बेकार पैरामीटर striping)

जहां हम देख सकते हैं कि comentar पैरामीटर का नाम है, और "Confirmar" यह मान है, जो बटन का पाठ भी है।

जो सामान्य से submit_tag "Confirmar", :name => 'comentar'

तो प्राप्त हुई थी तुम हो सकता था (यदि आप params की संख्या आप के साथ काम कर रहे हैं कम करना चाहते हैं) कई submit_tag "onevalue", :name => 'SAMEname', submit_tag "othervalue", :name => 'SAMEname' ...

और में उन्हें पुनः प्राप्त अपने नियंत्रक

if params[:SAMEname] == "onevalue" 
# do stuff 
elsif params[:SAMEname] == "othervalue" 
#do different stuff 
end 
संबंधित मुद्दे