加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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将由路由触发,但你必须为异常添加逻辑.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读