2009-09-19 9 views
6

मेरे मामले में नए और पूर्वावलोकन दोनों को बनाने और संपादित करने में आंशिक रूप से समान रूप से उपयोग करना है। आंशिक दिखता है कुछ हद तक यह (मैं Haml का उपयोग)= बटन_to फॉर्म को जेनरेट नहीं करता है अगर पहले से ही किसी अन्य रूप में

=form_tag ({:action => params[:action]}, :multipart => true) 
    =text_field :newsletter, :title 
    =text_area :newsletter, :body 
    =file_field :newsletter,:attachment 
    -if params[:action] == "preview" 
    =button_to "select contacts and send", :action => "contacts" 
    =submit_tag "save and preview" 

लेकिन html-उत्पादन में

... 
<input type="submit" value="select contacts and send"/> 
<input type="hidden" value="rwYnZlEpWV4dR89zjgprEALBYmP0xqM3lnKt9JDLyak=" name="authenticity_token"/> 
<input type="submit" value="save and preview" name="commit"/> 
... 

क्यों button_to बटन करने के लिए फार्म उत्पन्न नहीं करता है की तरह?

एक समाधान आंशिक और केवल 1 प्रति फॉर्म, के बाहर बटन रखना है, लेकिन मेरे पास एक ही रूप में 2 बटन कैसे हो सकते हैं?

संपादित करें: एक और वैकल्पिक हल एक छिपा हुआ चेकबॉक्स कि जावास्क्रिप्ट द्वारा सेट किया गया है button_to दबाया जाता है और प्रस्तुत फार्म, उन्हें नियंत्रक

उत्तर

12

HTML में अलग वास्तव में रूपों नेस्ट किए जाने के लिए अनुमति नहीं है किया जाएगा। कुछ ब्राउज़र करते हैं, लेकिन आप दूसरों में कुछ पागल व्यवहार देखेंगे। क्या HTML आप कच्चे आउटपुट या फायरबग से गणना की गई डीओएम दिखा रहे हैं?

इस मामले को संभालने का पसंदीदा तरीका अन्य 0 के बाहर अपने button_to को स्थानांतरित करना है। यदि आप जेएस-केवल विकल्पों के साथ अच्छे हैं, तो आप link_to :method => :post का उपयोग कर सकते हैं और एक बटन की तरह दिखने के लिए लिंक शैली बना सकते हैं।

1

अंत में इस्तेमाल किया

:name => 'otheraction' 
नियंत्रक में

फिर अगर या तो

params[:commit] or params[:otheraction] 

पैरामीटर हैश

1

में था जाँच की मैं एक मणि button_link_to कहा जाता है का निर्माण।

बटन_लिंक_टो विधि का उपयोग बटन टैग उत्पन्न करेगा लेकिन फार्म टैग द्वारा घोंसला रहित होगा।

बस इसे link_to की तरह उपयोग करना।

आप यहाँ से और अधिक जानकारी प्राप्त कर सकते हैं: https://github.com/tonilin/button_link_to

आप एक डेमो देखना चाहते हैं: http://button-link-to.herokuapp.com/

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