我想渲染这样的结构:
<tag1>
<tag2 someattribute="somevalue">
<.. lot of things inside ..>
</tag2>
</tag1>
<tag1>
<tag2 someattribute="someothervalue">
<.. different inside things inside ..>
</tag2>
</tag1>
tag1,tag2是相同的,它们只是参数化的。代码的内部部分发生了变化。我尝试像那样(haml)实现上面的东西:
%div{id:['products', id]}
.products_content
%div{id:['products', id, 'content'], class:'products_mask'}
= yield
这是部分_content_head.html.haml,它是从模板中调用的:
= render 'shared/content_head', id: 'all' do
%h3= Title
%p= Body of the text.
我的理论是,部分内部的收益会导致渲染传递的块并没有证明。有没有办法将partials用作代码包装器?你能给我一些解决方案吗?谢谢。
答案 0 :(得分:2)
这可能是capture
方法的好用。
我只熟悉ERB,但这是一般性的想法:
<% structure = capture do %>
<h3>Title</h3>
<p>Body of text</p>
<% end %>
然后将变量传递给partial:
<%= render 'shared/content_head', :structure => structure %>
在部分内部,吐出structure
变量:
<%= structure %>
在渲染部分内容时,在视图中多次重置structure
(或者更合适的是,在帮助器中?)。
答案 1 :(得分:0)
我使用了以下内容(Rails 4,但我认为它也适用于Rails 3):
compatibility-v7-appcompat
<%# app/views/users/_edit.html.erb %>
<%= render layout: 'modal_wrapping' do |f| %>
<%= f.input :email %>
...
<% end %>