2012-04-29 20 views
8

जो मैं समझता हूं, link_to का उपयोग विधियों के लिए किया जाता है, और button_to पोस्ट विधियों के लिए उपयोग किया जाता है।हमल: link_to बनाम बटन_to

दूसरी ओर, मुझे बताया गया कि HTML5 सेमेन्टिक्स के साथ, <button> किसी भी प्रकार के क्लिक करने योग्य ... अच्छा, बटन के लिए उपयोग किया जाता है। इस मामले में मेरे पास एक क्लिक करने योग्य बटन है जो उपयोगकर्ता को भरने के लिए एक फॉर्म भेजता है, क्या मुझे button_to या link_to बनाना चाहिए?

उत्तर

15

यह आसान है कि आप सोचते हैं। वह विधियां रेल सहायक हैं और हैमल के साथ कुछ भी करने की ज़रूरत नहीं है। हां, एक विधि पाने के लिए और दूसरा पोस्ट विधियों के लिए है। यदि आपको नियंत्रक को कोई भी डेटा पोस्ट करने की आवश्यकता है, तो button_to का उपयोग करें (उदाहरण के लिए जब रिकॉर्ड हटाया जाता है)। अन्यथा, link_to पर्याप्त है।

इसके अलावा, आप :method पैरामीटर का उपयोग कर link_to पोस्टिंग डेटा बना सकते हैं:

= link_to "Something", some_path, :method => :post 

अपने प्रश्न का उत्तर देना, link_to का उपयोग करें।

+0

यह 'विधि:' पोस्ट 'नहीं जोड़ता है' डेटा-विधि: 'पोस्ट' लिंक –

2

यदि आप किसी उपयोगकर्ता को कहीं भी भेजना चाहते हैं, तो यह अनुरोध प्राप्त हो गया है। इसलिए आपको इस मामले में link_to का उपयोग करना चाहिए। वैसे, आप पोस्ट अनुरोधों और अन्य अनुरोधों (जैसे बटन_to भी) के लिए link_to का उपयोग कर सकते हैं यदि आप निर्दिष्ट करेंगे: विधि। उदाहरण के लिए: =link_to "some path", some_path, :method => :get

3

आप उपयोगकर्ता को किसी संसाधन की तरह संसाधन को इंगित करने के लिए लिंक का उपयोग करना चाहिए।

लेकिन आप को किसी क्रिया को इंगित करने के लिए बटन का उपयोग करना होगा (जैसे आपके संपादन पृष्ठ पर "बनाएं"/"भेजें")। यदि यह आपके इंटरफ़ेस से सहमत नहीं है - उन्हें एक लिंक के रूप में शैली दें।

यहां कारण बताया: आप नहीं बिंदु किसी भी करने के लिए अपने उपयोगकर्ता link_to के माध्यम से गैर प्राप्त कर सकते हैं कार्रवाई करता है, तो वह जावास्क्रिप्ट समर्थन का अभाव है। इसलिए, बटन इस मामले में आपके भेजने/नष्ट करने की क्रिया को ट्रिगर करने के लिए एकमात्र विकल्प हैं।

उपयोग करने के लिए दोनों दृष्टिकोण अगर एक पेज है कि अंततः एक संसाधन के संशोधन की ओर जाता है करने के लिए अपने लिंक अंक (एक संपादन के लिए लिंक/बटन/पेज कि एक रूप से पता चलता बनाने) स्वतंत्र महसूस, आपके मामले में की तरह।

0

#link_to के बीच मुख्य सिद्धांत अंतर है, और #button_to#link_to सिर्फ एक लिंक टैग A बनाता है, और एक अतिरिक्त डेटा के बिना सरल AJAX अनुरोध करता है, #button_to एक कस्टम डेटा के साथ एक FORM बनाता है, जबकि कि है, इसलिए फार्म हो सकता है एक वेबसर्वर को विस्तारित AJAX अनुरोध करने के लिए प्रयोग किया जाता है। फ़ॉर्म डेटा में एम्बेडेड सीएसआरएफ-टोकन शामिल है, जिसका उपयोग अनुरोध प्रमाणीकरण के लिए किया जाता है। #link_to के मामले में सीएसआरएफ-टोकन को क्रमबद्ध किया जाना चाहिए और on_click ईवेंट में भेजना चाहिए।