2013-07-03 9 views
13

Qualcuno potrebbe dare una spiegazione chiara su come provide() funziona all'interno della vista? Ho letto la documentazione ufficiale, ma ciò che veramente mi preoccupa è questa, se mi definisco all'inizio di un modellorendimento e fornire() all'interno del modello

<% provide(:title, 'Help') %> 

e poi ho questa riga di codice

<%= yield :title %> 

ciò che realmente accade nel sfondo ? So che il rendimento dovrebbe chiamare un blocco di codice. Quale sarebbe il blocco di codice in questo contesto?

risposta

32

provide memorizza un blocco di markup in un identificatore per un uso successivo. In questo caso, 'Guida' nel simbolo: titolo. La fornitura è inclusa in <% %> per indicare che sta eseguendo questo codice e non viene stampato nella vista.

yield in questo caso sputa solo quel blocco indietro. Il rendimento è incluso in <%= %> per indicare che è stato stampato nella vista.

Pensa a come impostare una variabile e stampare una variabile.

Vedere: http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-provide per ulteriori informazioni. Notare che provide è davvero un wrapper per content_for, quindi è lì che si trovano le cose buone in quel collegamento.

Problemi correlati