我的“users”表中有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
答案 0 :(得分:3)
您可以在SimpleForm::FormBuilder#find_mapping
中查看错误发生的位置。您收到此错误的原因是因为simple_form询问Rails给定属性包含哪种类型的数据 - 在这种情况下为:binary
(Rails不知道或不关心您覆盖secret_number
方法) - 为了决定要生成什么类型的表单字段。由于无法知道二进制属性应该使用哪种表单字段,因此会出现此错误。
当然,解决方案是in the docs。如果要将其显示为文本输入,请使用:as
选项:
f.input :secret_number, :as => :string