天天看點

Alex學Ruby[ Rails Tip - text_field方法 ]

有這樣一個需求:

有個model,叫Product, @product = Product.find(1), 對應的表裡有個字段叫code,我想在@product.code的時候傳回的不是資料庫裡存儲的值,而是經過一個算法過濾後的值,我就在product的model裡定義了一個同名的方法 def code, 在控制台裡我測試,@product.code是沒問題的,可是在view部分,text_field :product ,:code 傳回的還是資料庫裡預設的值。  

來看看text_field源碼:

 options["value"] ||= value_before_type_cast(object) unless field_type == "file"

關鍵是這句, 我們隻需要加個:value => @product.code就把這個問題解決了。 

繼續閱讀