在 Rails 应用程序中,我遇到了一种情况,我希望有一个以方括号结尾的复选框名称,例如:
name="foo[bar][baz[]]"
其他特殊字符似乎得到了正确处理,但看起来 Rails 正在剥离方括号并将它们视为声明数组而不是名称的一部分。需要做什么来允许此名称中的任意字符(特别是括号)并让 Rails 正确处理它们?
在 Rails 应用程序中,我遇到了一种情况,我希望有一个以方括号结尾的复选框名称,例如:
name="foo[bar][baz[]]"
其他特殊字符似乎得到了正确处理,但看起来 Rails 正在剥离方括号并将它们视为声明数组而不是名称的一部分。需要做什么来允许此名称中的任意字符(特别是括号)并让 Rails 正确处理它们?
这是因为规范中不允许使用方括号:
ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_") , 冒号 (":") 和句点 (".")。
Rails 使用方括号在 params Hash 中建立关联,因此您不应该混淆这些名称。
如果你真的需要,你可以CGI.escape
自动解析你不想解析的值。然后,您将不得不CGI.unescape
在另一边使用它们。
"foo[bar][#{CGI.escape(name)}]"
CGI.unescape(params[:foo][:bar])