Benutzerdefinierte Fehlerseite - Ruby on Rails
Ich versuche zu setup eine benutzerdefinierte Fehlerseite in meiner website. Ich bin nach der Anleitung aufPerfectLine Blog.
Funktioniert es in dem Fall, wo der controller vorhanden ist, aber die id nicht vorhanden ist. Zum Beispiel, ich habe einen blog, Steuerung und id-4 nicht vorhanden. Es zeigt die benutzerdefinierte Fehlerseite
Aber es existiert nicht in dem Fall, wo der controller selbst ist nicht vorhanden. Zum Beispiel, wenn ich Tippen Sie einige zufällige controller mit einer numerischen id nicht bekommt gefangen von den Methoden, die ich haben das setup in der Anwendung-controller zu re-route, benutzerdefinierte Fehlerseiten. In diesem Fall bekomme ich eine
ActionController::RoutingError (No route matches "/randomcontrollername"):
in der terminal-und der Standard-Fehler-Seite, die kommt mit Schienen.
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
unless Rails.application.config.consider_all_requests_local
rescue_from Exception, :with => :render_error
rescue_from ActiveRecord::RecordNotFound, :with => :render_not_found
rescue_from ActionController::RoutingError, :with => :render_not_found
rescue_from ActionController::UnknownController, :with => :render_not_found
rescue_from ActionController::UnknownAction, :with => :render_not_found
end
private
def render_not_found(exception)
render :template => "/error/404.html.erb", :status => 404
end
def render_error(exception)
render :template => "/error/500.html.erb", :status => 500
end
end
Könnten Sie mir bitte helfen. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies mit der route Platzhalter in Schienen, können Sie mit jeder Handlung, jedem Teil der route mit Hilfe von wildcards.
Fangen alle restlichen Strecken, definieren eine niedrige Priorität route-mapping als die Letzte route in
config/routes.rb
:In Rails 3:
match "*path" => 'error#handle404'
In Rails 2:
map.connect "*path", :controller => 'error', :action => 'handle404'
params[:path]
enthält den passenden Rahmen.Wenn Sie nicht brauchen, dynamische Fehlerseiten, Bearbeiten
public/404.html
undpublic/505.html
. Wenn Sie dies tun, finden Sie Reza.mp ' s Antwort.