1

我想知道是否可以在 Rails 中添加一个例外来路由 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 作为参数。有没有办法在 routes.rb 中添加异常?

如果它有帮助,在我的errors_controller中我有..

  def error_404
        @not_found_path = params[:not_found]
  end

谢谢你

更新

我试着做

puts :not_found
puts %{not_found}

但似乎也不起作用嗯......我试图看看我是否可以从用户那里检索参数

4

2 回答 2

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
于 2012-05-27T06:20:51.597 回答
0

我确实在我的应用程序控制器中捕获了我的异常处理,但不幸的是对于 admin_data,我没有在 routes.rb 中明确设置它。它在 gem 中的某个地方配置了命名空间或其他东西(我不太确定)

但从积极的方面来说……我终于修好了!我改变了我的glob并做了......

match '*not_found', to: 'errors#error_404', :constraints => {:subdomain => "!(admin_data.)"}

忽略使用 admin_data 的所有内容。

于 2012-05-27T06:31:35.290 回答