ruby-on-rails - jbuilder descargar
¿Cómo extraer todos los atributos con Rails Jbuilder? (4)
Añadiendo más a la respuesta de @uiureo.
Supongamos que su Notificación tiene algún tipo de cargadores de imágenes (por ejemplo, carrierwave, paperclip)
Entonces, la versión de abajo no te devolverá el objeto que subiste, así que, ¿cómo obtienes la url de la imagen?
json.merge! notification.attributes
notification.attributes
es la conversión hash de un objeto, devolverá el valor de la columna del cargador montado, pero no la URL.
respuesta de muestra
notification: Object {
title: "hellow world"
img: "sample.png"
}
En su lugar intenta esto
json.merge! notification.as_json
Esto devolverá la columna montada como otro objeto en el que puede consultar la URL.
respuesta de muestra
notification: Object {
title: "hellow world"
img: Object {
url: "https://www.example.com/sample.png"
}
}
Es un dolor escribir códigos como este todo el tiempo en la plantilla jbuilder.json:
json.extract! notification, :id, :user_id, :notice_type, :message, :resource_type, :resource_id, :unread, :created_at, :updated_at
Así que me gustaría codificar así;
json.extract_all! notification
Descubrí que puedo hacerlo como los siguientes códigos, pero todavía son un poco largos para mí.
notification.attributes.each do |key, value|
json.set!(key, value)
end
¿Hay alguna forma mejor?
Estoy usando jbuilder 1.5.0 y fusionar! No funcionó pero encontré una sintaxis alternativa:
json.(notification, *notification.attributes.keys)
Puedes mirar a json.except!
json.except! @resource, :id, :updated_at
json.except! @resource
Tal vez puedas usar json.merge!
.
json.merge! notification.attributes
https://github.com/rails/jbuilder/blob/master/lib/jbuilder.rb#L277