Условная упаковка тегов в Rails / ERB

Каким будет наиболее понятный и / или краткий способ записать это в ERB? Написание собственного метода нежелательно, так как я хотел бы распространить более чистое решение для других в моей компании.

<% @items.each do |item| %>
  <% if item.isolated? %>
    <div class="isolated">
  <% end %>

    <%= item.name.pluralize %> <%# you can't win with indentation %>

  <% if item.isolated? %>
    </div>
  <% end %>
<% end %>

== Update ==

Я использовал более общую версию ответа Gal, которая не зависит от тегов.

def conditional_wrapper(condition=true, options={}, &block)
  options[:tag] ||= :div  
  if condition == true
    concat content_tag(options[:tag], capture(&block), options.delete_if{|k,v| k == :tag})
  else
    concat capture(&block)
  end
end

== Использование

<% @items.each do |item| %>
  <% conditional_wrapper(item.isolated?, :class => "isolated") do %>
    <%= item.name.pluralize %>
  <% end %>
<% end %>
22
задан Joseph Jaber 27 April 2011 в 21:30
поделиться