2012-03-15 14 views

उत्तर

7

इसे संभालने का कोई शानदार तरीका नहीं है, लेकिन कुछ कामकाज हैं। चर्चा here पैदावार निम्नलिखित सुझाव:

मार्गों

अपने मार्गों फ़ाइल में निम्न जोड़ें:

match "*", :to => "home#routing_error"

और इस कार्रवाई में त्रुटि संभाल:

def routing_error 
    render text: "Not found, sorry", status: :not_found 
end 
+0

अधिक तकनीकी रूप से सही जवाब 'होगा पाठ प्रस्तुत करना:" नहीं मिला, खेद ", स्थिति:: not_found, content_type: माइम :: HTML' सही ढंग से की तरह प्रतिक्रियाओं को संभालने के लिए'/icon.png' – kizzx2

+0

वास्तव में, @aboutaaron के समाधान ने मेरे लिए काम किया। मार्ग-पैटर्न में बस एक "*" काम नहीं किया। कुछ बकवास जोड़ने की जरूरत है :) –

7

मैं @ matthew-savage's r को दोहराने में सक्षम नहीं था esults।

routes.rb

match "*gibberish", :to => "home#routing_error" 

नोटिस मैं वाइल्डकार्ड के बाद पाठ कैसे शामिल हैं: हालांकि, प्रति रेल एक और StackOverflow सवाल पर route globbing और this question पर मार्गदर्शन, मैं इतना है कि यह समस्या हल हो जाती।

नियंत्रक/home_controller.rb

.... 
def routing_error 
    render text: "Not found, sorry", status: :not_found 
end 
0

अच्छा example: जैसा कि ऊपर दिखाया नियंत्रक ठीक है।

route.rb

  • रेल 3:

    match '*unmatched_route', :to => 'application#raise_not_found!'

  • रेल 4:

    get '*unmatched_route' => 'application#raise_not_found!'

application_controller.rb

def raise_not_found! 
    raise ActionController::RoutingError.new("No route matches #{params[:unmatched_route]}") 
end 
संबंधित मुद्दे