在 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 %>
==更新==
我使用了一个更通用的 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 %>
最佳答案
如果你真的希望 DIV 是有条件的,你可以这样做:
将其放入 application_helper.rb
def conditional_div(options={}, &block)
if options.delete(:show_div)
concat content_tag(:div, capture(&block), options)
else
concat capture(&block)
end
end
然后你可以在你的 View 中这样使用:
<% @items.each do |item| %>
<% conditional_div(:show_div => item.isolated?, :class => 'isolated') do %>
<%= item.name.pluralize %>
<% end %>
<% end %>
关于ruby-on-rails - Rails/ERB 中的条件标记包装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5809917/