8 votes

Rendu d'un bloc content_for dans un helper

J'essaie de rendre le résultat d'un bloc content_for par le biais d'un helper.

J'ai un modèle (HAML) et une mise en page comme suit :

# app/views/books/show.html.haml
-content_for(:page_header) do
     %h1= @book.title

# app/views/application.html.haml
...
=yield(:page_header) 
...

Cela fonctionne très bien.

Ce que je veux faire, c'est faire cet appel dans une aide à la place. Je souhaite donc obtenir ce qui suit :

# app/views/books/show.html.haml
-content_for(:page_header) do
     %h1= @book.title

# app/views/application.html.haml
....
=page_header(block)
....

# app/helpers/application.rb
....
def page_header(&block)

    # Some view logic
    # ...

    =yield(:page_header)
end
....

Je peux obtenir un résultat partiel en appelant l'aide avec :

# app/views/application.html.haml
=page_header { yield(:page_header) }

# app/helpers/application.rb
def page_header(&block)
  yield
end

mais ça me semble moche.

Avez-vous des idées ? Merci d'avance.

RÉPONSE : Utilisez à nouveau content_for(:page_header) pour le rendre.

5voto

Sohan Points 1766

Vous pouvez regarder la capture pour obtenir la sortie dans une chaîne et ensuite l'utiliser. Voici comment : http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-capture

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X