gpt4 book ai didi

ruby-on-rails - Rails/ERB 中的条件标记包装

转载 作者:数据小太阳 更新时间:2023-10-29 06:29:47 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com