在 Rails 中使用视图检查数组

Posted

技术标签:

【中文标题】在 Rails 中使用视图检查数组【英文标题】:Checking an array with views in Rails 【发布时间】:2013-01-04 18:03:44 【问题描述】:

我有一个带有一些视图的 rails 应用程序,如果视图是数组不包含任何数据,我想显示一些不同的东西。目前我的观点是这样的:

<% @trips.each do |trip| %>
  <p><%= trip.id %> | <%= trip.name %></p>
<% end %>

但是如果 @trips 里面没有任何内容,有没有办法可以显示一些不同的文本?

【问题讨论】:

【参考方案1】:

如果你使用部分:

trips/_trip.html

<p><%= trip.id %> | <%= trip.name %></p>

你的看法

<%= render @trips || 'No trip' %>

【讨论】:

【参考方案2】:

您可以使用 if/else 条件检查:

<% if (@trips != nil) then %>
  <p><%= trip.id %> | <%= trip.name %></p>
<% else %>
  <p>Some message</p>
<% end %>

<% if (@trips.blank?) then %>
  <p>Some message</p>
<% else %>
  <p><%= trip.id %> | <%= trip.name %></p>
<% end %>

【讨论】:

感谢 JW8 什么时候用比较合适?感谢您抽出宝贵时间回复! @davessh,它们是等价的 - 空白?更简洁一点,并使用 Ruby 习惯用法,而第一种方法是在其他语言中进行类似的检查。【参考方案3】:

当然,只要使用 if there,像这样

<% if @trips.blank? %>
  <p>No trips</p>
<% else %>
  <% @trips.each do |trip| %>
    <p><%= trip.id %> | <%= trip.name %></p>
  <% end %>
<% end %>

【讨论】:

【参考方案4】:

使用 if 语句并像这样检查它是否为空或为空

<% if @trips.nil? || @trips.empty? %>
  <p>There are no trips</p>
<% else %>
  <% @trips.each do |trip| %>
    <p><%= trip.id %> | <%= trip.name %></p>
  <% end %>
<% end %>

编辑

如果使用 Rails,您可能希望使用 @trips.blank?,如果您决定使用另一个 ruby​​ 框架或项目,那么您可以使用上面的 if/else 代码来检查数组是 null 还是空

【讨论】:

@trips.nil? || @trips.empty? 可以写成@trips.blank?,就像在 ewiinnnnn 的回答中一样 非常真实,直到我发布我的帖子后我才看到他的回复,我会编辑

以上是关于在 Rails 中使用视图检查数组的主要内容,如果未能解决你的问题,请参考以下文章

在 Ruby on Rails 中检查视图中的 nil

在 rails 视图中打印多维数组

在 Rails 视图中循环遍历对象数组:意外行为

在 Rails 中处理视图和仅帮助程序常量的最佳方法

Rails:从视图中排序数组时遇到问题

Rails 中的分析视图