ruby-on-rails – 当我有一个自定义页面时,获取404 Not Found默
发布时间:2020-12-17 02:46:32 所属栏目:百科 来源:网络整理
导读:我有404的自定义错误页面500状态代码,当我把localhost:3000 / something.html时,它工作正常.但是当我放置localhost:3000 / controller / element_of_a_model时不起作用. routes.rb中: if Rails.env.production? then unless Rails.application.config.con
我有404&的自定义错误页面500状态代码,当我把localhost:3000 / something.html时,它工作正常.但是当我放置localhost:3000 / controller / element_of_a_model时不起作用.
routes.rb中: if Rails.env.production? then unless Rails.application.config.consider_all_requests_local get '*not_found',to: 'errors#error_404' get '*internal_server_error',to: 'errors#error_500' end else unless get '*not_found',to: 'errors#error_500' end end ErrorsController: def error_404 render_error 404 end def error_500 render_error 500 end private def render_error(status) respond_to do |format| format.html { render 'error_' + status.to_s() + '.html',:status => status,:layout => 'errors'} format.all { render :nothing => true,:status => status } end end 解决方法
你必须将它放在应用程序控制器中:
rescue_from ActiveRecord::RecordNotFound do |exception| render_error 404 end def render_error(status) respond_to do |format| format.html { render 'error_' + status.to_s() + '.html',:layout => 'errors'} format.all { render :nothing => true,:status => status } end end 实际上你的ErrorController将由路由触发,但你必须为异常添加逻辑. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |