Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

198
Visualizações
Cómo enviar el padre/hijo de Rails al front-end JS para que sea accesible como un objeto anidado

En backend, mi relación de objeto es que un Item tiene has_many Options . Me gustaría poder acceder a todos los atributos del elemento y sus opciones secundarias como un hash en la interfaz:

 items = [ { id: 1, item_attribute_name: item_attribute_value, options: [ {id: 1, option_attribute_name: option_attribute_value}, {id: 2, option_attribute_name: option_attribute_value}, ] }, { id: 2, item_attribute_name: item_attribute_value, options: [] } ]

Estoy enviando datos a través de un objeto json en respuesta a una solicitud de ajax o usando la práctica gema gon . Me di cuenta de que si SOLO estaba interesado en enviar los elementos principales, el formato se realiza automáticamente de tal manera que puedo devolver Item.all y, en la parte delantera, obtener una matriz de elementos con cada elemento como un hash que representa exactamente sus atributos. como yo quiera.

Pero si quiero enviar a los niños, ¿hay una forma estándar de hacerlo? Me doy cuenta de que puedo construir los atributos del niño como se muestra a continuación, pero me pregunto si hay una forma más directa y directa.

Cómo haría que esto funcione construyendo los atributos secundarios:

 items = Item.all items.each do |i| child_attr = {"options" => i.options } i.attributes.merge(child_attr) end

Una respuesta totalmente aceptable, por cierto, es que no hay... una forma automágica de hacer esto sin hacer lo que estoy haciendo ahora, que es convertir cada objeto principal en atributos en el backend y luego unir los atributos secundarios.

Solo hago esta pregunta, francamente, porque sería bueno mantener las relaciones de objetos en el backend para reutilizarlas en otro lugar, si es posible, en lugar de convertir las cosas en un hash.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Creo que la única forma de obtener el resultado esperado es con algunos parches de mono. Por lo tanto, puede usar un serializador, incluir o usar ActiveModel::Serializers::JSON, que se incluye de forma predeterminada en sus modelos.

Por ejemplo, con ActiveModel::Serializers::JSON, puede hacer algo como:

 items = Item.all items.map! do |i| i.serializable_hash(include: { options: {} }) end

Esto se debe a la carga ansiosa de Rails, que evita tener que cargar todos los niños de una asociación (has_many, por ejemplo). Donde le gustaría serializar depende de su caso de uso.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda