2012-05-27 45 views
1

我想知道是否可以添加异常来在rails中路由通配。在我的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} 

,但似乎并没有工作,要么嗯...我尝试看能不能从用户检索PARAMS

回答

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 
+0

我用下面的答案修复了它。谢谢你的回应!我感谢你回答并接受! – Sasha

0

我做明白我的异常处理在我的应用程序控制器,但不幸的是对于admin_data,我没有明确地将其设置在routes.rb中。它被配置在命名空间或什么东西的宝石(我不太确定)

但在积极的音符......我终于修好了!我改变了我的glob并且做了...

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

忽略所有使用admin_data的东西。

+0

当我尝试访问公用文件夹下的文件时,这会造成我的问题,但这是一个不错的解决方案。 – juanpastas