# La visualizzazione delle risposte annidate (/n/) riempie le pagine con segnaposto per post eliminati che la visualizzazione piatta omette

**URL:** https://meta.discourse.org/t/nested-replies-view-n-pads-pages-with-deleted-post-placeholders-that-the-flat-view-omits/406322
**Category:** Bug
**Tags:** nested-replies
**Created:** [28 Giugno 2026, 6:59pm UTC](https://meta.discourse.org/t/nested-replies-view-n-pads-pages-with-deleted-post-placeholders-that-the-flat-view-omits/406322 "2026-06-28T18:59:27Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![nicolsdennis](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nicolsdennis/32/545883_2.png) [@nicolsdennis](https://meta.discourse.org/u/nicolsdennis)
#### Post date: [28 Giugno 2026, 6:59pm UTC](https://meta.discourse.org/t/nested-replies-view-n-pads-pages-with-deleted-post-placeholders-that-the-flat-view-omits/406322/1 "2026-06-28T18:59:27Z")

</div>

Se controllate la discussione del plugin Custom Wizard di @angus, come utente anonimo, nella vista delle risposte annidate: [https://meta.discourse.org/n/-/73345.json?page=0&sort=old](https://meta.discourse.org/n/-/73345.json?page=0&sort=old)

 ![Screenshot 2026-06-28 at 3.03.36 PM](https://global.discourse-cdn.com/meta/original/4X/6/d/8/6d81a6c00ffba0a5d14bf0ec42ecec0d418c5116.jpeg)

`/n/-/73345.json?page=0&sort=old` restituisce 20 post radice e ciascuno di essi è un segnaposto eliminato — `cooked` vuoto, nessun autore, `total_descendant_count: 0`. Quindi l’intera prima pagina è composta da righe vuote “rimosse”.

La vista piatta degli stessi post non mostra nulla (il post #2 passa direttamente agli argomenti correlati), quindi sono correttamente nascosti lì. La vista annidata li mantiene e li conta per la pagina, il che crea la discrepanza.

Sembra che il caricatore ad albero recuperi i post eliminati intenzionalmente (per mantenere visibile un genitore eliminato quando ha ancora risposte attive sotto di esso), ma sta anche mantenendo i post eliminati che non hanno più risposte visibili. In una discussione come questa, in cui le prime risposte sono state tutte eliminate, alla fine si ottiene una pagina intera di segnaposto vuoti invece di contenuti effettivi.

L’impostazione è sicuramente attiva — l’endpoint ha restituito 200 invece di 404.

Il colpevole sembra essere `apply_visibility` in `NestedReplies::TreeLoader` — `scope.unscope(where: :deleted_at)` recupera ogni post eliminato nell’albero. Ha senso per un genitore eliminato che ha ancora risposte attive sotto di esso, ma sta anche mantenendo i nodi foglia eliminati e i rami completamente eliminati, e questi occupano slot nella finestra `ROOTS_PER_PAGE` (e contano per `has_more_roots`).

Per gli utenti non staff, penso che dobbiate rimuovere un post eliminato a meno che non abbia almeno un discendente non eliminato — mantenetelo solo quando il suo `total_descendant_count` visibile è `> 0`. `NestedViewPostStat` esclude già i discendenti eliminati/sussurrati da quel conteggio, quindi non è necessaria una query aggiuntiva.

Dovrebbe essere applicato nei tre punti che costruiscono la pagina in modo da non ottenere pagine corte: `root_posts_scope`, `batch_preload_tree` e la parte di riempimento pagina / `has_more_roots`. Il percorso per lo staff rimane invariato per il recupero.

---

<div class="post-metadata">

### Author: ![nicolsdennis](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nicolsdennis/32/545883_2.png) [@nicolsdennis](https://meta.discourse.org/u/nicolsdennis)
#### Post date: [28 Giugno 2026, 7:01pm UTC](https://meta.discourse.org/t/nested-replies-view-n-pads-pages-with-deleted-post-placeholders-that-the-flat-view-omits/406322/2 "2026-06-28T19:01:47Z")

</div>

Onestamente, questo mi ha tenuto a rincorrere la coda per un po’ — ero convinto che il mio client mobile fosse rotto, dato che i commenti rimanevano semplicemente vuoti su alcuni argomenti, mentre funzionavano perfettamente su altri. Ci ho messo un po’ a capire che era l’endpoint a restituire una pagina piena di segnaposto cancellati, non qualcosa da parte mia.

 ![Screenshot 2026-06-28 at 3.00.31 PM](https://global.discourse-cdn.com/meta/original/4X/0/9/5/095cc262b4658542b8e722aedb390eb3ab2cf02d.png)

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [29 Giugno 2026, 4:02am UTC](https://meta.discourse.org/t/nested-replies-view-n-pads-pages-with-deleted-post-placeholders-that-the-flat-view-omits/406322/3 "2026-06-29T04:02:47Z")

</div>

Per tua informazione @markvanlan, nel caso tu abbia qualche idea.

---

<div class="post-metadata">

### Author: ![markvanlan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/markvanlan/32/160087_2.png) [@markvanlan](https://meta.discourse.org/u/markvanlan)
#### Post date: [29 Giugno 2026, 1:05pm UTC](https://meta.discourse.org/t/nested-replies-view-n-pads-pages-with-deleted-post-placeholders-that-the-flat-view-omits/406322/4 "2026-06-29T13:05:18Z")

</div>

Sì, è ragionevole: se non ci sono discendenti, probabilmente non è necessario renderizzare il segnaposto. Lo aggiungo alla mia lista.

Una cosa da notare è che le discussioni con risposte annidate tornano a `/t/` invece di `/n/`. Lo vedrai quando aggiornerai Discourse la prossima volta.

---

<div class="post-metadata">

### Author: ![nicolsdennis](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nicolsdennis/32/545883_2.png) [@nicolsdennis](https://meta.discourse.org/u/nicolsdennis)
#### Post date: [29 Giugno 2026, 1:30pm UTC](https://meta.discourse.org/t/nested-replies-view-n-pads-pages-with-deleted-post-placeholders-that-the-flat-view-omits/406322/5 "2026-06-29T13:30:54Z")

</div>

Va bene, una cosa da notare: lo screenshot non è del mio forum, è di [meta.discourse.org](http://meta.discourse.org). Ho testato meta con la mia app client per varie condizioni con risposte annidate.

---

<div class="post-metadata">

### Author: ![nicolsdennis](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nicolsdennis/32/545883_2.png) [@nicolsdennis](https://meta.discourse.org/u/nicolsdennis)
#### Post date: [29 Giugno 2026, 1:57pm UTC](https://meta.discourse.org/t/nested-replies-view-n-pads-pages-with-deleted-post-placeholders-that-the-flat-view-omits/406322/6 "2026-06-29T13:57:57Z")

</div>

Ho inserito segnaposto per i messaggi eliminati nel frattempo; con le risposte annidate disattivate dalle impostazioni dell’app, la visualizzazione corretta delle risposte rimane.

 ![img-1ed0110df9.jpeg|1080 x 2340](https://global.discourse-cdn.com/meta/original/4X/e/3/9/e397db1bfbe2613d48013a48ae61d1f2ecd8981f.jpeg)  
 ![img-f6d1761fac.jpeg|1080 x 2340](https://global.discourse-cdn.com/meta/original/4X/6/c/2/6c2dfbdca076b16f7db4d66489d0ae6373a9e516.jpeg)

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [29 Giugno 2026, 2:28pm UTC](https://meta.discourse.org/t/nested-replies-view-n-pads-pages-with-deleted-post-placeholders-that-the-flat-view-omits/406322/7 "2026-06-29T14:28:19Z")

</div>

> [@markvanlan](#):
>
> Sì, è ragionevole: se non ci sono discendenti, probabilmente non dobbiamo rendere il segnaposto. Lo aggiungerò alla mia lista.

Possiamo farlo in modo diverso e spostare gli elementi eliminati senza discendenti alla fine?

---

<div class="post-metadata">

### Author: ![nicolsdennis](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nicolsdennis/32/545883_2.png) [@nicolsdennis](https://meta.discourse.org/u/nicolsdennis)
#### Post date: [29 Giugno 2026, 3:01pm UTC](https://meta.discourse.org/t/nested-replies-view-n-pads-pages-with-deleted-post-placeholders-that-the-flat-view-omits/406322/8 "2026-06-29T15:01:39Z")

</div>

@falco una cosa da confermare per le modalità di ordinamento: con `old`/`new`/`top`, l’inversione ordinerebbe i segnaposto degradati tra loro usando la stessa chiave, o semplicemente li lascerebbe nella loro ordine originale? Per me va bene entrambe le soluzioni, voglio solo assicurarmi che una radice eliminata senza discendenti non possa riapparire a metà lista con un ordinamento diverso.
