Schienen rendern teilweise mit Block
Ich versuche zu re-verwenden Sie eine html-Komponente, die ich geschrieben habe, stellt panel-styling. So etwas wie:
<div class="v-panel">
<div class="v-panel-tr"></div>
<h3>Some Title</h3>
<div class="v-panel-c">
.. content goes here
</div>
<div class="v-panel-b"><div class="v-panel-br"></div><div class="v-panel-bl"></div></div>
</div>
So sehe ich, dass das Rendern dauert ein block. Ich dachte, dann könnte ich so etwas tun:
# /shared/_panel.html.erb
<div class="v-panel">
<div class="v-panel-tr"></div>
<h3><%= title %></h3>
<div class="v-panel-c">
<%= yield %>
</div>
<div class="v-panel-b"><div class="v-panel-br"></div><div class="v-panel-bl"></div></div>
</div>
Und ich will so etwas wie:
#some html view
<%= render :partial => '/shared/panel', :locals =>{:title => "Some Title"} do %>
<p>Here is some content to be rendered inside the panel</p>
<% end %>
Leider funktioniert das nicht mit diesem Fehler:
ActionView::TemplateError (/Users/bradrobertson/Repos/VeloUltralite/source/trunk/app/views/sessions/new.html.erb:1: , unexpected tRPAREN
old_output_buffer = output_buffer;;@output_buffer = ''; __in_erb_template=true ; @output_buffer.concat(( render :partial => '/shared/panel', :locals => {:title => "Welcome"} do ).to_s)
on line #1 of app/views/sessions/new.html.erb:
1: <%= render :partial => '/shared/panel', :locals => {:title => "Welcome"} do -%>
...
Damit es nicht, wie die =
offensichtlich mit einem block, aber wenn ich es entfernen, dann ist es eben nichts ausgibt.
Weiß jemand, wie das zu tun, was ich versuche hier zu erreichen? Ich möchte zu re-verwenden Sie dieses Fenster, html an vielen stellen auf meiner Website.
InformationsquelleAutor der Frage brad | 2010-06-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während diese beiden Antworten über Arbeit (gut das Beispiel, dass tony links zu jedenfalls), landete ich zu finden die lapidare Antwort, dass vor der post (Kommentar von Kornelis Sietsma)
Ich denke
render :layout
hat genau das, was ich suchte:kombiniert mit:
InformationsquelleAutor der Antwort brad
Hier ist eine alternative, basierend auf früheren Antworten.
Erstellen Sie Ihre teilweise auf
shared/_modal.html.erb
:Definieren Sie Ihre Methode auf
application_helper.rb
:Nennen Sie aus jeder beliebigen Ansicht:
InformationsquelleAutor der Antwort rebagliatte
Können Sie die capture-Helfer, und auch inline in der render-Aufruf :
und freigegebenen/panel:
produzieren:
Sehen http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html
InformationsquelleAutor der Antwort Yetanotherjosh
Ich denke, es wird funktionieren (habe gerade quick-dirty-test) wenn Sie es einer Variablen zuweisen und erst dann ausgeben.
InformationsquelleAutor der Antwort Tesserex
Basierend auf der akzeptierten Antwort dies ist, was funktioniert gut für mich mit Schienen 4.
Wir leisten können, eine Tafel als solche:
Dies erfordert eine helper-Methode und eine gemeinsame Sicht:
helper-Methode (ui_helper.rb)
Anzeigen, (/ui/panel.html-Code.haml)
InformationsquelleAutor der Antwort Kris