2011-01-16 12 views
6

मैं button_to रेल सहायक का उपयोग करने की कोशिश कर रहा हूं। मैं निम्नलिखित कोड लिखा है:रूबी में रूटी में बटन रूट खराब मार्ग

<%= button_to 'Edit Item', edit_item_path(@item), :class => 'mark-button' %>

और निम्न त्रुटि संदेश

No route matches "/items/1/edit"

मिला लेकिन जब मैं पृष्ठ को रीफ्रेश यह उचित कार्रवाई करने के लिए चला जाता है। मुझे प्राप्त पृष्ठ का यूआरएल localhost:3000/items/1/edit है जो सही यूआरएल है। अगर मैं button_to कमांड link_to पर स्विच करता हूं तो पेज को कोई त्रुटि नहीं होती है। ठीक

<%= link_to 'Edit Item', edit_item_path(@item), :class => 'mark-button' %>

भार: इस कोड को अर्थ। शायद button_to की कुछ विशेषता है, मुझे पता नहीं है, लेकिन मैं खो गया हूं।

उत्तर

5

मुझे लगता है कि आप बटन_to का दुरुपयोग कर रहे हैं। मैंने हमेशा सोचा है कि यदि आप संपादन कार्रवाई से जुड़ रहे हैं, तो आपको link_to का उपयोग करना चाहिए। बटन उन कार्रवाइयों के लिए प्रतीत होते हैं जिन्हें डेटा को पोस्ट/डालने जैसे किसी फॉर्म को अपडेट करने या रिकॉर्ड हटाने की आवश्यकता होती है।

अद्यतन:

डिफ़ॉल्ट रूप से, button_to पोस्ट प्राप्त करने के बजाय का उपयोग करता है। इसलिए जब आप यूआरएल (यानी जीईटी) पर जाते हैं तो यह काम करता है।

+0

मैं इस सुविधा कैसे ओवरराइड कर सकते हैं:

पूर्व के लिए

? – Nayish

+0

यदि आप इसे एक बटन की तरह दिखाना चाहते हैं, तो मैं link_to का उपयोग करूंगा और एक सीएसएस क्लास का उपयोग करूंगा जो आपके लिंक को बटन जैसा दिखता है। यहां महान लेख: http://www.smashingmagazine.com/2009/11/18/designing-css-buttons-techniques-and-resources/ – dontangg

+2

@nayish आप प्राप्त करने के लिए विधि सेट कर सकते हैं: 'button_to' संपादित करें ', edit_item_path (@item),: method =>: ' –

2

बटन_to POST पर डिफ़ॉल्ट, और लिंक_to डिफ़ॉल्ट करने के लिए डिफ़ॉल्ट।

यदि आपको वास्तव में बटन_ की आवश्यकता है तो आप संपादन और अन्य लिंक के लिए GET को डिफ़ॉल्ट विधि बदल सकते हैं।

<%= button_to 'Edit', edit_user_path(@user), :method => :get %> 
संबंधित मुद्दे