在 Rails 应用程序中,在 routes.rb 文件中,我们正在路由一些遗留 URL,如下所示:
get "downloads/item/:slug", :to => redirect {|params| "/downloads/#{params[:slug].gsub('.', '')}"}, :constraints => { :slug => /[^\/]+/ }
但是,问题在于其中一些遗留 URL 具有不可编码的字符,例如省略号,这会破坏 gsub
命令并出现错误:
NilClass# (ArgumentError)“UTF-8 中的无效字节序列”
我的问题是:如何在我的 routes.rb 文件中捕捉到这个异常,以及其他类似的异常?我认为这与在文件末尾使用“包罗万象”以路由到 404 不同。
最佳答案
如果错误发生在 block 内,您可以使用begin..rescue
get "downloads/item/:slug", :to => redirect {|params|
begin
"/downloads/#{params[:slug].gsub('.', '')}"
rescue ArgumentError
"/"
end
}, :constraints => { :slug => /[^\/]+/ }
阅读更多:http://ruby-doc.org/docs/ProgrammingRuby/html/tut_exceptions.html
关于ruby - 如何在 routes.rb 中捕获参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7905851/