2012-08-25 28 views
7

के अंदर रेल काम नहीं कर रहा है, मैंने ट्विटर बूटस्ट्रैप 2.1.0 का उपयोग करने के लिए बस मणि कम-रेल-बूटस्ट्रैप को अपग्रेड किया है, और ऐसा लगता है कि बूटस्ट्रैप ड्रॉपडाउन के अंदर, यह दृश्य मेरे दृश्य में टूटा हुआ प्रतीत होता है :रेल बूटस्ट्रैप ड्रॉपडाउन (2.1.0)

<%= link_to 'Logout', destroy_admin_user_session_path, :method => :delete %> 

सर्वर को लगता है कि यह एक DELETE के बजाय एक GET अनुरोध है। हालांकि, अगर मैं उस व्यू कोड को लेता हूं और इसे तुरंत ड्रॉपडाउन के बाहर रखता हूं, तो यह बहुत अच्छा काम करता है और सर्वर DELETE अनुरोध को पहचानता है।

अगर मैं इस तरह के रूप में मेरे gemfile बदलने के लिए:

gem 'less-rails-bootstrap', '~> 2.0.4' 

फिर 'बंडल अद्यतन' चलाने के लिए और सर्वर को पुनः आरंभ, तो सब कुछ के रूप में फिर से उम्मीद काम करता है। लेकिन अगर मैं बस है:

gem 'less-rails-bootstrap' 

फिर 'बंडल अद्यतन' चलाने के लिए और सर्वर को पुनः आरंभ, तो सर्वर सोचता हटाएं GET अनुरोध है।

मैंने मणि 'ट्विटर-बूटस्ट्रैप-रेल' पर स्विच करने का प्रयास किया, और सटीक एक ही समस्या होती है। मुझे लगता है कि मुझे कुछ गलत करना होगा?

+0

मुझे यकीन है कि क्या कारण यहाँ है नहीं कर रहा हूँ, लेकिन यह सच है कि रेल के साथ क्या हो सकता है जब आप 'निर्दिष्ट एक रूप अनुकरण करने के लिए जावास्क्रिप्ट का उपयोग करता है: विधि =>: 'link_to' का उपयोग कर लिंक पर हटाएं। विवरण के लिए [प्रलेखन] (http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to) देखें। हो सकता है कि उस जावास्क्रिप्ट के साथ नए बूटस्ट्रैप विवादों में कुछ जोड़ा गया हो। –

+0

मैं यही सोच रहा था, लेकिन मुझे अभी भी उम्मीद है कि यह मामला नहीं है। मुझे इस मुद्दे को रिपोर्ट करने वाले किसी और को नहीं मिला है, लेकिन ऐसा इसलिए हो सकता है क्योंकि बूटस्ट्रैप 2.1.0 बहुत लंबा नहीं रहा है। – robotron2000

+0

ध्यान दें कि ड्रॉपडाउन कार्यों के अंदर बुलाया गया कोई जावास्क्रिप्ट नहीं है। अपने साइनआउट लिंक_to में, 'पुष्टि करें: "लॉगआउट?" ' और ध्यान दें कि यह या तो काम नहीं करता है। – Arcolye

उत्तर

6

हाँ, यह एक ट्विटर बूटस्ट्रैप मुद्दा। शायद अगले रिलीज में तय किया जाएगा। इधर, इस त्वरित सुधार की कोशिश:

$('body') 
    .off('click.dropdown touchstart.dropdown.data-api', '.dropdown') 
    .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }); 
+1

धन्यवाद। 'ऑफ' कॉल के साथ प्रचार-रोकथाम हैंडलर को बस अनबाइंड करना मेरे लिए पर्याप्त था। –

+0

इसके लिए खेद है, लेकिन यह कोड वास्तव में कहां जाता है? – Marc

+0

दोस्त! बहुत बढ़िया। मार्क, बस '$ (फ़ंक्शन() {...}) में डाल दें; 'अपने application.js फ़ाइल में ब्लॉक करें। – andrerobot

2

जाहिर है दूसरों के रूप में अच्छी तरह से एक ही समस्या आ रही है: https://github.com/twitter/bootstrap/issues/4688

अब के लिए चिंतन करना साथ त्वरित सुधार devise.rb बदलने के लिए हो रहा है शामिल करने के लिए:

config.sign_out_via = :get 
+2

यह काम करेगा, लेकिन इसे आमतौर पर एक जीईटी के माध्यम से आपके आवेदन लॉगआउट का खुलासा करने के लिए एक विरोधी पैटर्न माना जाता है। कुछ ठोस कारण - वेब प्रॉक्सी और ब्राउज़िंग एक्सेलेरेटर आपके लॉगआउट एंडपॉइंट के अनजाने में उपयोगकर्ता को लॉग आउट कर सकते हैं। और इंटरनेट पर कहीं भी जहां कोई उपयोगकर्ता एक आईएमजी टैग पोस्ट कर सकता है, वे आपके लॉगिन एंडपॉइंट पर इंगित करते हैं, जो आपके उपयोगकर्ताओं को लॉग आउट करते हैं। –

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