2010-12-23 96 views
0

根据有关URL 25个字符的规格应进行编码:为什么link_to仅对几个字符进行url编码?

http://en.wikipedia.org/wiki/Percent-encoding

原来的Rails 3编码仅几个字符([] &?)等是不变(/)。

因此,当我用这样的:

test_param = "test/a?bc" 
link_to "Test link", :test_param => test_param 

的URL被打破(路径未找到错误)。那是因为虽然问号是百分比编码,但斜线不是。这打破了网址。

现在我需要使用params包括斜杠。如何强制link_to方法的正确url编码?也许使用显式编码(CGI.encode)?这是一个合适的解决方案?

回答

1

我认为明确地对一个字符串进行编码要好得多(另一种选择是覆盖link_to实现,但这可能会非常糟糕,因为其他gems/Rails本身可能依赖于它的行为方式)定义)。

此外,由于您在应用中具有的参数可能包含正斜杠,因此最好明确一下,以便在几个月后,您仍然知道为什么要明确编码! (更好的代码可读性)

+0

是的,但这实际上意味着没有Rails应用程序能够处理带反斜杠的表单输入... – lzap 2011-01-02 19:57:00

相关问题