我有一个模型,在初始创建后不允许用户更新大多数字段。
我已经看到了: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,然后传播到视图。 :)
答案 0 :(得分:4)
以下是禁用<INPUT>
字段而无需在new
和edit
视图中复制表单助手的一种方法:
f.text_field :supplier_id, readonly: f.object.persisted?
答案 1 :(得分:-4)
使用attr_protected
(来自Bill Eisenhauer)。
Google搜索rails constants
的第一个结果。