2017-09-21 5 views
1

dies meine aktuelle Implantation von Handhabungsfehler ist:Wie zeigt man 404-Seite in Rails 4 ohne Redirect?

#routes.rb 
match "/404", :to => "errors#not_found", :via => :all, as: 'not_found' 
match "/500", :to => "errors#internal_server_error", :via => :all 

#ErrorsController.rb 
class ErrorsController < ApplicationController 
    def not_found 
    render(:status => 404) 
    end 

    def internal_server_error 
    render(:status => 500) 
    end 
end 

#views/errors/not_found.html.erb 
(static HTML page) 

Mein Problem ist, wenn ich eine falsche URL in meiner Website, wie www.example.com/asdfasdf geben, werde ich zu www.example.com weitergeleitet/404. Zum Vergleich, wenn ich auf www.stackoverflow.com/asdfasdf gehe, bekomme ich einen 'Seite nicht gefunden' Fehler, aber die URL sagt immer noch www.stackoverflow.com/asdfasdf.

Ich möchte das Verhalten ändern, so dass es hier in Stack Overflow wie es funktioniert, wo ich die 404-Seite angezeigt wird, aber die URL bleibt gleich, wie ich es eingegeben habe. Was wäre der beste Weg, das zu tun? Vielen Dank!

Antwort

2

Versuchen Sie folgendes:

# routes.rb 
match "/404", :to => "errors#not_found", :via => :all, as: 'not_found' 
match "/500", :to => "errors#internal_server_error", :via => :all 

# errors_controller.rb 
class ErrorsController < ApplicationController 
    def not_found 
    render :file => 'public/404.html', :status => :not_found, :layout => false 
    end 

    def internal_server_error 
    render :file => 'public/500.html', :status => :not_found, :layout => false 
    end 
end