从管理命名空间呈现自定义错误页面
Rendering custom error page from admin namespace
我在 Rails 4 应用程序中有自定义错误页面,在 ApplicationController
中有一个方法,我在某些地方使用它来手动引发 RoutingError
:
def not_found
raise ActionController::RoutingError.new('Not Found')
end
ErrorsController
有一个 file_not_found
动作和相应的视图。 routes.rb
有以下内容:
match '/404', to: 'errors#file_not_found', via: :all
所有这些让我可以在我的控制器中编写诸如 not_found unless item.available
之类的代码来强制执行 404。
我目前仅在从管理命名空间调用 not_found
时收到以下错误:Missing template [project path]/public/404.html
。如何使用相同的视图从管理员那里使用 not_found
?
我省略了一个我认为不相关但结果很重要的细节:我正在使用 rails_admin
。在细读这个优秀 gem 的源代码时,我注意到它定义了自己的 not_found
方法 here:
def not_found
render :file => Rails.root.join('public', '404.html'), :layout => false, :status => 404
end
为了覆盖它,我在 config/initializers/rails_admin_not_found.rb
中添加了以下代码:
RailsAdmin::ApplicationController.module_eval do
def not_found
raise ActionController::RoutingError.new('Not Found')
end
end
我在 Rails 4 应用程序中有自定义错误页面,在 ApplicationController
中有一个方法,我在某些地方使用它来手动引发 RoutingError
:
def not_found
raise ActionController::RoutingError.new('Not Found')
end
ErrorsController
有一个 file_not_found
动作和相应的视图。 routes.rb
有以下内容:
match '/404', to: 'errors#file_not_found', via: :all
所有这些让我可以在我的控制器中编写诸如 not_found unless item.available
之类的代码来强制执行 404。
我目前仅在从管理命名空间调用 not_found
时收到以下错误:Missing template [project path]/public/404.html
。如何使用相同的视图从管理员那里使用 not_found
?
我省略了一个我认为不相关但结果很重要的细节:我正在使用 rails_admin
。在细读这个优秀 gem 的源代码时,我注意到它定义了自己的 not_found
方法 here:
def not_found
render :file => Rails.root.join('public', '404.html'), :layout => false, :status => 404
end
为了覆盖它,我在 config/initializers/rails_admin_not_found.rb
中添加了以下代码:
RailsAdmin::ApplicationController.module_eval do
def not_found
raise ActionController::RoutingError.new('Not Found')
end
end