1

我的“用户”表中有一个binary列类型,当我尝试将该字段包含在 simple_form_for 标记中时,出现错误。

= simple_form_for @user
  = f.input :secret_number

这是错误-

No input found for binary

一些可能有用的额外信息 - 所以我在此列中存储了一些加密信息。数据在保存 ActiveRecord 时被加密。但是在呈现给用户的表单中,我想显示填充数据,例如 - *****456"。我编写了以下方法来解密/填充 secret_number。

def secret_number
  decrypt_and_pad_up(self.secret_number)
end
4

1 回答 1

3

您可以在SimpleForm::FormBuilder#find_mapping. 你得到这个错误的原因是因为 simple_form 询问 Rails 给定属性包含什么类型的数据:binary——在这种情况下(Rails 不知道也不关心你是否覆盖了该secret_number方法)——以便决定什么类型的表单要生成的字段。由于无法知道二进制属性应该使用哪种表单字段,因此您会收到此错误。

自然,解决方案在 docs 中。如果您希望它显示为文本输入,请使用以下:as选项:

f.input :secret_number, :as => :string
于 2011-12-10T02:22:56.897 回答