2015-07-21 15 views
8

Ho un form_tag nella mia visualizzazione e alcuni text_field_tag nidificati in esso. Non voglio che l'utente modifichi i campi di testo, così ho fatto: disabled => true.Rails form_tag non invia parametri se disabilitato: true

Il problema: Se faccio: disabilitato => true il valore del campo di testo non è passato in params hash, mentre se lo faccio: in sola lettura => true lo fa inviare i valori in params hash

È questo previsto? Se sì, non vi è alcun accenno a ciò nella documentazione. In caso contrario, dovrei presentare un problema in GitHub?

+0

Sì. È il comportamento previsto. – Pavan

risposta

12

Sì, questo è il comportamento previsto Probabilmente non è menzionato nella documentazione di Rails perché il comportamento di controllo disabled e readonly è definito dalla specifica W3C.

Vedere W3C documentation for Disabled controls, che indica che "i controlli disabilitati non possono avere esito positivo". Un controllo "riuscito" è definito come "valido" per l'invio. " L'impostazione di disabled a true su un campo di input in Rails non causerà la mancata presentazione.

I controlli di sola lettura, tuttavia, possono avere esito positivo. Pertanto, se si desidera che il valore sia inviato, ma non modificabile, è necessario utilizzare readonly impostato su true.

4

Sì, questo è previsto, ma non ha nulla a che fare con Rails. In base alle specifiche HTML5, i campi modulo che sono disabled vengono saltati quando viene inviato il modulo (vedere 4.10.22.4 Constructing the form data set).

Se non si vuole che l'utente sia in grado di modificare il campo, ma non vuole i suoi dati da presentare con la forma, è necessario utilizzare l'attributo readonly, ad esempio:

<%= text_field_tag 'year', '2015', readonly: true %> 
Problemi correlati