2010-04-30 27 views
5

我有一個模型,用戶不允許在初始創建後更新大多數字段。Rails在編輯時重用窗體視圖,但只設置一些字段

我已經看到了:readonly HTML屬性我可以在所有字段助手上使用,但是在所有字段上使用條件感覺... icky。

我現在沒有使用任何特別的東西來創建我的表格,只是簡單的HAML。任何人都知道這樣做的更好方法?

這是我一直想這樣做迄今:

def set_readonly?(object, html_attr) 
    html_attr.merge(object.new_record? ? {} : {:readonly => 'readonly'}) 
end 

用作:

f.text_field :supplier_id, set_readonly?(@damaged_goods, {:size => 5}) 

的解決方案,讓我流口水。將設置屬性爲已讀的方式 - 僅在State Machine的模型上,然後傳播到視圖。 :)

回答

2

這裏有沒有你的newedit觀點複製表單助手禁用<INPUT>領域的一種方式:

f.text_field :supplier_id, readonly: f.object.persisted? 
-3

使用attr_protected(來自Bill Eisenhauer)。

谷歌搜索的第一個結果rails constants

+3

'attr_protected'只是從保護數據庫中被更新的值。我寧願沒有我的用戶花時間更新字段,以便在沒有警告的情況下保存。 :)因此,我想找到一種方法來設置特定狀態的只讀值,然後視圖會知道將其設置爲只讀。我現在正在使用我在問題主體中編寫的'set_readonly?'助手。 – gaqzi 2010-05-26 07:47:58

相關問題