Vorrei provare a limitare l'uso dei partial all'interno di altri partial, dal momento che può influenzare negativamente la velocità di rendering della vista (ad es. il rendering di molti partial è molto lento), ma detto questo, devo dire che sì va bene usare parziali all'interno di altri parziali.
Un paio di cose che dovresti probabilmente rendertene conto:
- Può diventare fonte di confusione come tutti gli inferi, specialmente quando:
- stai passando un sacco di variabili locali.
- stai eseguendo il rendering di raccolte, ovvero eseguendo il ciclo su un partial con un array di qualche tipo.
- Escludendo dal fatto che tu stia facendo questa domanda, probabilmente non sai che stai già rendendo parziali all'interno di partial.
- ciò che intendo con questo, è che il layout (presumibilmente "application.html.erb") sarà davvero l'unico non parziale in una vista.
- Ogni volta che hai un'azione resa da una vista, cioè "mostra", "nuova", "modifica" (supponendo che tu sia riposante), dovresti capire che la vista corrispondente (ad esempio "show.html.erb") 'ad esempio) è un rendering parziale all'interno del file di layout principale.
- Quindi qualsiasi utilizzo di un partial che tu stesso fai ('_users.html.erb' o che cosa hai) è in realtà già un 'partial in un altro partial'.
Mi sento come Inception, vero? :)
Per quanto riguarda il tuo esempio specifico, sono d'accordo con l'altro che dovresti probabilmente usarlo come aiuto. E puoi usarlo su molti modelli fintanto che ne hai abbastanza astratti nell'assistente, in questo modo:
def delete_link_for(polymorphic_object, method_symbol)
link_to "delete", polymorphic_object, method: :delete,
data: { confirm: "You sure?" },
title: post.send(method_symbol)
end
In questo modo puoi invocare in questo modo:
<%= delete_link_for(@post, :content) %>
<%= delete_link_for(@user, :username) %>
ecc.