为什么link_to url-encoding只有几个字符?

时间:2010-12-23 18:35:37

标签: ruby-on-rails ruby url encoding

根据规范,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)?这是一个合适的解决方案吗?

1 个答案:

答案 0 :(得分:1)

我认为显式编码字符串要好得多(另一个选项是覆盖link_to实现,但这可能非常糟糕,因为其他gems / Rails本身可能依赖于它来表现它的定义)。

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