hacer funcionar los metadatos booleanos

de yapa, eliminar casos especiales en el formulario
This commit is contained in:
f 2019-09-30 15:20:23 -03:00
parent b18dae8b8e
commit 5f3bbbfb1f
No known key found for this signature in database
GPG key ID: 2AE5A13E321F953D
4 changed files with 18 additions and 10 deletions

View file

@ -6,8 +6,23 @@ class MetadataBoolean < MetadataTemplate
false
end
# Convertir el valor que pasemos a boolean
# Los checkboxes son especiales porque la especificación de HTML
# indica que no se envían aquellos checkboxes con valores vacíos, con
# lo que nunca sabemos cuándo se los está deshabilitando. Rails
# subsana esto enviando un valor vacío bajo el mismo nombre
# (generalmente '0').
#
# En este caso, queremos priorizar el dato enviado por le usuarie
# antes que el generado internamente.
def value
return false if false?
self[:value].present? || document.data.fetch(name.to_s, default_value)
end
private
def false?
self[:value] == '0'
end
end

View file

@ -21,9 +21,6 @@
-# Dibuja cada atributo
- post.attributes.each do |attribute|
-# El borrador se muestra distinto
- next if attribute == :draft
- metadata = post.send(attribute)
- type = metadata.type

View file

@ -1,10 +1,5 @@
.form-group
= submit_tag t('.save'), class: 'btn submit-post'
-# Permitir guardar como borrador
- if post.attributes.include? :draft
= submit_tag t('.save_draft'),
class: 'btn submit-post-draft',
name: 'post[draft]'
.invalid_help.alert.alert-danger.d-none
= site.config.fetch('invalid_help', t('.invalid_help'))
.sending_help.alert.alert-success.d-none

View file

@ -1,5 +1,6 @@
.form-check
= check_box_tag "post[#{attribute}", metadata.value, metadata.value,
= hidden_field_tag "post[#{attribute}]", '0'
= check_box_tag "post[#{attribute}]", metadata.value, metadata.value,
class: "form-check-input #{invalid(post, attribute)}",
aria: { describedby: id_for_help(attribute) },
autofocus: autofocus