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