在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文件中捕获此异常,以及其他异常?我认为这不同于在文件末尾使用“catch-all”来路由到404。
答案 0 :(得分:2)
如果块内发生错误,您可以使用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