1

在 Rails 应用程序中,我遇到了一种情况,我希望有一个以方括号结尾的复选框名称,例如:

name="foo[bar][baz[]]"

其他特殊字符似乎得到了正确处理,但看起来 Rails 正在剥离方括号并将它们视为声明数组而不是名称的一部分。需要做什么来允许此名称中的任意字符(特别是括号)并让 Rails 正确处理它们?

4

2 回答 2

1

这是因为规范中不允许使用方括号:

ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_") , 冒号 (":") 和句点 (".")。

HTML 4 基本 HTML 数据类型

关于 Rails 部分,并结合这两个答案(12):

Rails 使用方括号在 params Hash 中建立关联,因此您不应该混淆这些名称。

于 2013-09-24T18:05:50.613 回答
0

如果你真的需要,你可以CGI.escape自动解析你不想解析的值。然后,您将不得不CGI.unescape在另一边使用它们。

"foo[bar][#{CGI.escape(name)}]"
CGI.unescape(params[:foo][:bar])
于 2020-09-18T00:02:42.140 回答