0

我问这个是因为我有一个单选按钮设置为 nil 的表单:

 = f.radio_button :estimate_type, nil

我在方法调用的开头有调试器:

def create
  debugger

当我点击调试器时,我检查了我的参数,他们说值on 不是 nil.

进入疯狼。不知何故,这在点击时被转换了。而且我已经搜索了整个应用程序,寻找可能泄漏的 javascript 文件,或任何与“on”词非常相似的东西。我检查了我所有的基地。schema.rb 中的默认值,jquery 点击事件,模型验证,你可以命名它。任何地方都没有“开”这个词。

所以真正的问题是,有没有一种方法可以将调试器放在一个地方,如果我点击提交,调试器会出现模型验证之前,然后希望参数仍然是它们在表单中的位置. 然后我可以跟踪它,看看哪里出了问题。

4

3 回答 3

1

它与您的 JavaScript 没有任何关系。这也是我以前经历过的事情,但我不确定为什么它将 nil 转换为 'on'。我确实知道:nil作为符号传入会返回一个空字符串,并且只是简单地传入false.

于 2012-05-31T20:08:23.380 回答
1

尝试解决问题的更好方法可能是将调试器放在验证回调本身中。

于 2012-05-31T20:23:35.960 回答
1

与 rails 无关 - 您可以通过使用浏览器的网络检查器来验证这一点,以查看浏览器实际上正在发送参数值“on”。

通过尝试将值设置为 nil(这实际上没有意义 - 参数值始终是字符串),您完全从生成的 HTML 中抑制了 value 属性。

标准规定,在这种情况下,输入的默认值应为“on”,这就是您的浏览器提交的内容。

于 2012-05-31T21:09:33.137 回答