我问这个是因为我有一个单选按钮设置为nil的表单:
= f.radio_button :estimate_type, nil
我在方法调用的开头就有调试器:
def create
debugger
当我点击调试器时,我会查看我的参数,他们说价值为on
不是 nil
。
进入疯狂狼。不知何故,这会在点击时转换。我已经搜索了整个应用程序,寻找可能是漏洞的javascript文件,或任何非常类似于“on”的内容。我检查了所有的基地。 schema.rb中的缺省值,jquery单击事件,模型验证,您为其命名。在任何地方都没有“on”这个词。
所以真正的问题是,有没有一种方法可以将调试器放在一个地方,如果我点击提交,调试器会出现之前模型验证,然后希望在哪里参数仍然是它们的形式。然后我就可以沿着小道走下去,看看它出了什么问题。
答案 0 :(得分:1)
它与您的JavaScript没有任何关系。这也是我以前经历过的事情,但我不确定为什么它会将nil转换为'on'。我知道传入:nil
作为符号会返回一个空字符串,而只是简单地传入false
。
答案 1 :(得分:1)
尝试解决问题的更好方法可能是将调试器放入验证回调中。
答案 2 :(得分:1)
与rails无关 - 您可以使用浏览器的网络检查程序验证这一点,以确定浏览器实际上是在“on”上发送参数值。
通过尝试将值设置为nil(这实际上没有意义 - 参数值始终是字符串),您将完全从生成的HTML中抑制value属性。
standard表示在这种情况下,输入的默认值应为“on”,这就是您的浏览器提交的内容。