我想知道我是否可以添加一个例外来路由轨道中的globbing。在我的routes.rb我有
unless params[:not_found].eql? 'admin_data'
match '*not_found', to: 'errors#error_404'
end
我试图强制执行自定义错误页面,除非用户访问
myapp.heroku.com/admin_data
它似乎不像抓取:not_found作为param工作。有没有办法在routes.rb中添加例外?
如果有帮助,在我的errors_controller中我有..
def error_404
@not_found_path = params[:not_found]
end
谢谢
更新
我试过做
puts :not_found
puts %{not_found}
但似乎没有工作嗯...我试图看看我是否可以从用户检索参数
答案 0 :(得分:1)
在routes.rb中定义允许的路由并在应用程序控制器中添加异常处理以便路由错误会更方便:
class ApplicationController < ActionController::Base
rescue_from ActionController::RoutingError, :with => :render_not_found
private
def render_not_found
render_error_page_for(404)
end
def render_error_page_for(code)
respond_to do |format|
format.html { render :file => "#{Rails.root}/public/#{code}.html", :status => code, :layout => false }
end
end
答案 1 :(得分:0)
我确实在应用程序控制器中捕获了异常处理但不幸的是对于admin_data,我没有在routes.rb中明确设置它。它在gem中的某个地方配置了命名空间或其他东西(我不太确定)
但积极的一面......我终于修好了!我改变了我的全局并做了......
match '*not_found', to: 'errors#error_404', :constraints => {:subdomain => "!(admin_data.)"}
忽略使用admin_data的所有内容。