Tengo un modelo en el que el usuario no puede actualizar la mayoría de los campos después de la creación inicial.Rieles que reutilizan la vista de formulario en la edición, pero configurando algunos campos de forma sencilla
He visto el atributo HTML :readonly
que puedo virar en todos los ayudantes de campo, pero hacer condicionales en todos los campos me parece ... icky.
No estoy usando nada especial para crear mis formularios en este momento, simplemente HAML. Alguien sabe de una mejor manera de hacer esto?
Esto es lo que he pensado en hacerlo hasta el momento:
def set_readonly?(object, html_attr)
html_attr.merge(object.new_record? ? {} : {:readonly => 'readonly'})
end
utilizan como:
f.text_field :supplier_id, set_readonly?(@damaged_goods, {:size => 5})
La solución para que me cae la baba sería una manera de establecer un atributo como lectura -solo en el modelo junto con State Machine que luego se propagaría a las vistas. :)
'attr_protected' solo protege el valor de ser actualizada en la base de datos. Prefiero que mis usuarios no pierdan tiempo actualizando un campo para que no se guarde sin una advertencia. :) Por lo tanto, quería encontrar una manera de establecer el valor de solo lectura en un estado específico y luego la vista sabría configurarlo como de solo lectura. Por el momento estoy usando el helper 'set_readonly?' Que escribí en el cuerpo de la pregunta. – gaqzi