2012-03-15 28 views

Trả lời

7

Không có cách nào tuyệt vời để xử lý nó, nhưng có một vài cách giải quyết. Các cuộc thảo luận here mang lại những gợi ý sau đây:

đường

Thêm dòng sau vào các tuyến đường tập tin của bạn:

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

và xử lý các sai sót trong hành động này:

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

Các phản ứng về mặt kỹ thuật chính xác hơn sẽ là 'làm cho văn bản: "Không tìm thấy, xin lỗi", trạng thái:: not_found, content_type: Mime :: HTML' để xử lý một cách chính xác phản ứng như '/icon.png' – kizzx2

+0

Infact, giải pháp từ @aboutaaron đã làm việc cho tôi. Chỉ một "*" trong mẫu tuyến đường không hoạt động. Cần thêm một số CRAP :) –

7

Tôi không thể nhân rộng r @ matthew-savage's esults. Tuy nhiên, theo các hướng dẫn trên Rails route globbingthis question trên một câu hỏi StackOverflow, tôi giải quyết vấn đề này như sau:

routes.rb

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

thông báo làm thế nào tôi bao gồm văn bản sau khi các ký tự đại diện. Bộ điều khiển là tốt như trình bày ở trên:

điều khiển/home_controller.rb

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

Tốt example.

route.rb

  • Rails 3:

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

  • Rails 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 
Các vấn đề liên quan