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?またはempty?

<% 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 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?は@abhasの回答を使用してください

于 2012-08-06T09:32:41.527 に答える
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 %>

ラインナップ配列が空であるか、両方の場合で nil であるかをチェックします。

于 2012-08-06T09:24:58.270 に答える