Ho un modello a cui l'utente non è autorizzato ad aggiornare la maggior parte dei campi dopo la creazione iniziale.Rails che riutilizzano la vista modulo in modifica, ma l'impostazione di alcuni campi readonly
Ho visto l'attributo HTML :readonly
che posso attaccare su tutti gli aiutanti sul campo, ma fare condizionali su tutti i campi sembra ... icky.
Non sto utilizzando niente di speciale per creare i miei moduli al momento, semplicemente HAML. Qualcuno sa di un modo migliore di farlo?
Questo è quello che ho pensato di farlo finora:
def set_readonly?(object, html_attr)
html_attr.merge(object.new_record? ? {} : {:readonly => 'readonly'})
end
utilizzato come:
f.text_field :supplier_id, set_readonly?(@damaged_goods, {:size => 5})
La soluzione a farmi sbavare sarebbe un modo per impostare un attributo come letto -solo sul modello insieme a State Machine che poi si propagherebbe alle viste. :)
'attr_protected' solo protegge il valore di essere aggiornato nel database. Preferirei che i miei utenti non passino il tempo ad aggiornare un campo per non salvarlo senza un avviso. :) Così ho voluto trovare un modo per impostare il valore di sola lettura su uno stato specifico e quindi la vista avrebbe saputo impostarlo come di sola lettura. In questo momento sto usando l'helper "set_readonly?" Che ho scritto nel corpo della domanda. – gaqzi