2

在我看来,我正在测试是否存在某些记录。如果他们这样做,我会遍历它们并显示每一个。但是,如果这些记录不存在,我希望显示一条消息。这是我认为的代码:

      <% if current_user.lineups %>
        <% for lineup in current_user.lineups do %>
          <li><%= link_to "#{lineup.course.cl} #{lineup.course.cn}", index_path %></li>
        <% end %>
      <% else %>
        <li><%= link_to "You have no courses", index_path %></li>
      <% end %>

现在,当记录存在时,迭代工作得很好。每当我创建正确的记录时,这段代码都会运行得非常好,并为每个被迭代的记录创建一个链接。但是,如果不存在任何记录,则不会显示任何内容。'else' 语句被完全忽略。我尝试修改“if”语句,但无济于事。我试过:

<% unless current_user.lineups.nil? %>

也:

<% if !( current_user.lineups.nil? ) %>

我在这里束手无策。任何和所有输入将不胜感激。

4

3 回答 3

5

空数组不为nil,尝试使用any?orempty?

<% if current_user.lineups.any? %>
  ...
<% else %>
  <li><%= link_to "You have no courses", index_path %></li>
<% end %>
于 2012-08-06T09:23:47.417 回答
2

在你的 if 语句中试试这个

<% if current_user.lineups.blank? %>
   <li><%= link_to "You have no courses", index_path %></li>
<% else %>
   <% for lineup in current_user.lineups do %>
      <li><%= link_to "#{lineup.course.cl} #{lineup.course.cn}", index_path %></li>
   <% end %> 
<% end %>

它将检查 lineups 数组是否为空或 nil 两种情况。

于 2012-08-06T09:24:58.270 回答
2

你可以试试

if current_user.lineups.present? # true if any records exist i.e not nil and empty
  # do if records exist
else
  # do if no records exist
end

展示?只是不是(!)的空白吗?

您可以使用blank?present?根据您需要的代码放置。如果您使用blank?go 和 @abhas 答案

于 2012-08-06T09:32:41.527 回答