Rails在编辑时重用表单视图,但只读取一些字段

时间:2010-04-30 12:05:27

标签: ruby-on-rails views readonly

我有一个模型,在初始创建后不允许用户更新大多数字段。

我已经看到了: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 个答案:

答案 0 :(得分:4)

以下是禁用<INPUT>字段而无需在newedit视图中复制表单助手的一种方法:

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

答案 1 :(得分:-4)

使用attr_protected(来自Bill Eisenhauer)。

Google搜索rails constants的第一个结果。