Ich versuche, eine HTML-Komponente, die ich geschrieben habe, die Panel-Styling bietet wieder zu verwenden. Etwas wie:Schienen render teilweise mit Block
<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 Render einen Block nimmt. 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 möchte 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 umgehen:
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 -%>
...
So es mag die =
offensichtlich nicht mit einem Block, aber wenn ich es entferne, dann gibt es nichts aus.
Weiß jemand wie ich das mache, was ich hier erreichen will? Ich möchte dieses Panel html an vielen Stellen meiner Site wiederverwenden.
Die akzeptierte Antwort ist korrekt, aber seit Rails 5.0.0 ist dies ohne die 'Layout'-Problemumgehung möglich, siehe http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials-to-simplify -views – fabi