开发者

Is it possible to use partials to be rendered as wrappers in Rails?

I would like to render structures like this:

<tag1>
  <tag2 someattribute="somevalue">
    <.. lot of things inside ..>
  </tag2>
</tag1>

<tag1>
  <tag2 someattribute="someothervalue">
    <.. different inside things inside ..>
  </tag2>
</tag1>

The tag1, tag2 are the same, they are 开发者_如何学Cjust parametrized. The inner part of the code changes. I tried to implement the thing above like that (haml):

%div{id:['products', id]}
  .products_content
    %div{id:['products', id, 'content'], class:'products_mask'}
      = yield

This was the partial _content_head.html.haml, which is called from a template:

= render 'shared/content_head', id: 'all' do
  %h3= Title
  %p= Body of the text.

My theory that yield inside the partial would lead to rendering of the passed block did not prove. Is there a way to use partials as code wrappers? Can you suggest me some solution how to reach this? Thank you.


This might be a good use of the capture method.

I'm only familiar with ERB, but here is the general idea:

<% structure = capture do %>
  <h3>Title</h3>
  <p>Body of text</p>
<% end %>

Then pass the variable into the partial:

<%= render 'shared/content_head', :structure => structure %>

And within the partial, spit out the structure variable:

<%= structure %>

Reset structure multiple times within the view as you render partials (or maybe more appropriately, in a helper?).


I've used the following (Rails 4, but I think it should work with Rails 3 too):

<%# app/views/users/_edit.html.erb %>
<%= render layout: 'modal_wrapping' do |f| %>
  <%= f.input :email %>
  ...
<% end %>

.

<%# app/views/users/_modal_wrapping.html.erb %>
<div id='modal'>
  <%= simple_form_for @user do |f| %>
    <%= yield f %>
  <% end %>
</div>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜