根据规范,URL中应包含25个字符:
http://en.wikipedia.org/wiki/Percent-encoding
事实证明,Rails 3只编码了几个字符([]&?)而其他字符不受影响(/)。
因此当我使用这样的东西时:
test_param = "test/a?bc"
link_to "Test link", :test_param => test_param
网址已损坏(找不到路由错误)。那是因为虽然问号是百分比编码,但斜线不是。这打破了网址。
现在我需要处理包括斜杠在内的参数。如何为link_to方法强制正确的url编码?也许使用显式编码(CGI.encode)?这是一个合适的解决方案吗?
答案 0 :(得分:1)
我认为显式编码字符串要好得多(另一个选项是覆盖link_to实现,但这可能非常糟糕,因为其他gems / Rails本身可能依赖于它来表现它的定义)。
此外,由于您在应用中的参数可能包含正斜杠,因此最好明确一下,这样几个月之后,您仍然知道为什么要明确编码! (更好的代码可读性)