【发布时间】:2015-08-18 16:58:29
【问题描述】:
我希望 .html.erb 中的一种干净方式仅在变量不为 nil 时循环遍历变量。
如果@family 为nil,我希望执行以下操作。
<% @family.children.each.with_index(1) do |family_member, index| %>
// HTML HERE
<% end %>
我试图避免做这样的事情
<% if @family %>
<% @family.children.each.with_index(1) do |family_member, index| %>
// HTML HERE
<% end %>
<% end %>
尤其是尽量避免需要
<% if @family && @family.children %>
<% @family.children.each.with_index(1) do |family_member, index| %>
// HTML HERE
<% end %>
<% end %>
有没有更好的方法来做到这一点?
【问题讨论】:
-
@family && @family.children && @family.children.each.with_index(1)...怎么样? -
你可以试试这个
<% @family.try(:children).each.with_index(1) do |family_member, index| %>吗? -
@Pavan:这将导致未定义的方法
each用于 nil:NilClass -
包含您尝试迭代的集合的对象似乎是
nil,而不是集合本身。 -
我正在努力防止两者都是 nil。
标签: ruby-on-rails ruby ruby-on-rails-4 erb