URI.escape 和 CGI.escape 有什么区别?这篇文章正在讨论将 URI.escape 替换CGI::escape
为 URI.escape 已过时。在我们的rails 3.2
应用程序中,URI.escape
用于redirect_to
. 这是我们的 Rails 应用程序中的两个案例:
URI.escape(SUBURI + '/user_menus')
URI.escape(SUBURI + '/authentify/signin')
以下是中的比赛routes.rb
:
match '/signin', :to => 'authentify::sessions#new'
match '/user_menus', :to => 'user_menus#index'
match '/view_handler', :to => 'authentify::application#view_handler'
替换为 后CGI::escape
,出现错误:
ERROR URI::InvalidURIError: the scheme http does not accept registry part:
删除后CGI::escape
,错误消失。另一个例子:
redirect_to CGI::escape(SUBURI + "/authentify/view_handler?index=0&msg=Insufficient Access Right! for action=#{action} and resource=#{resource}")
用 CGI::escape 替换后,出现错误(如上)。
上面使用 CGI::escape 有什么问题?URI.escape 的确切等价物是什么?? 还有什么时候 URI.escape 会被完全淘汰?