2011-12-10 34 views
1

我在我的「用戶」表中有一個binary列類型,當我嘗試在simple_form_for標記中包含該字段時,出現錯誤。當遇到二進制字段時,Rails會將標記錯誤輸出

= 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 
+1

應該這樣顯示什麼類型的輸入了作爲? –

+0

只是一個正常的輸入框類型=文本 – kapso

+0

你寫的'secret_number'方法將覆蓋'self.secret_number',從而遞歸地調用它自己。它應該可能是'decrypt_and_pad_up self [:secret_number]'。 –

回答

3

。你可以在SimpleForm::FormBuilder#find_mapping看到錯誤發生在哪裏,你得到這個錯誤的原因是simple_form向Rails詢問給定屬性包含的數據類型 - :binary在這種情況下(Rails不知道或者不關心你是否覆蓋因爲沒有辦法知道二進制屬性應該使用什麼樣的表單域,所以你會得到這個錯誤:

Natu集會,解決方案是in the docs。如果你想讓它顯示爲文本輸入,使用:as選項:

f.input :secret_number, :as => :string 
相關問題