आपके मार्ग फ़ाइल में आपके पास क्या है?
कोशिश अपने मार्गों में
map.log_out 'logout', :controller => 'sessions', :action => 'destroy'
डाल।
तो बस
<%= link_to "Sign out", log_out_url %>
साइन आउट लिंक के लिए
है।
संपादित
सब कैसे आप मार्ग निर्दिष्ट करने के लिए नीचे अपने।
क्योंकि आपके पास रूटिंग में map.log_out था, तो यूआरएल http://localhost:3000/logout यूआरएल इसे उठाया गया है और सही कार्रवाई के लिए भेजा गया है।
यदि आपके पास:
<%= link_to "logout", :controller=> "sessions", :action=> "destroy" %>
यह सिर्फ http://localhost:3000/session की आप के लिए एक लिंक उत्पन्न होगा। लेकिन, यह रूटिंग के लिए कुछ भी नहीं करता है। आपको अभी भी सही मार्ग निर्दिष्ट करने की आवश्यकता है।
ध्यान दें कि रेल यूआरएल को नष्ट करने की क्रिया को शामिल नहीं करते हैं। (यह http://localhost:3000/session/destroy नहीं बनाएगा।) यह मानता है कि यदि आपके पास नष्ट करने की कोई कार्रवाई है तो आप इसे एक DELETE http क्रिया के साथ भेज देंगे। किसी कारण से, यह बिल्कुल सही नहीं है और यह वास्तव में DELETE क्रिया भेजने के लिए भी डिफ़ॉल्ट नहीं है।
ऐसा करने के लिए यह मजबूर कर सकते हैं:
<%= link_to "logout", {:controller=> "user_sessions", :action=> "destroy"}, :method => :delete%>
यह अभी भी जब तक आप इसे सही ढंग से काम नहीं करेगा भी मार्ग। यदि आप डाल मार्गों में निम्नलिखित:
map.resource :session
फिर रेल सभी क्रियाओं को आवागमन की पैदा करते हैं और उनके लिए डिफ़ॉल्ट क्रिया को निर्दिष्ट करेगा, DELETE भी शामिल है। अधिक जानकारी यहां मिल सकती है: Rails Routing from the Outside In।
वह पूरा पृष्ठ पढ़ने के लायक है जब तक कि आप वास्तव में इसे समझ नहीं लेते। रेल समझने के लिए रूटिंग महत्वपूर्ण है!
सत्रों जैसे साधारण नियंत्रक के लिए, लॉग_आउट रूट निर्दिष्ट करना और फिर log_out_url से लिंक करना आसान है ..
(आशा है कि भावना, सो हानि में पैर पसार रही है बनाता है!)
के लिए लॉगआउट पथ बदल के रूप में अन्य मॉडल नाम निर्धारित ' – pixeltocode
कमाल ... यह काम किया! मैंने <% = link_to "साइन आउट" का उपयोग किया, logout_url%> धन्यवाद – pixeltocode
सिर्फ जिज्ञासा से बाहर ... <% = link_to "logout" नहीं होना चाहिए: नियंत्रक => "सत्र",: action => "नष्ट"%> भी काम करते हैं? यह session_controller में 'नष्ट' def का संदर्भ दे रहा है, जो उस के लिए 'लॉगआउट' – pixeltocode