[RUBY] if ~ .length! = 0 Trouver une valeur vide

Valeur vide

Lors de la mise en œuvre de la fonction d'affichage des produits répertoriés comme problème dans une liste J'écrivais une expression conditionnelle dans l'instruction if

C'est,

Lorsque la variable d'instance est vide, affichez plutôt un produit factice

quelque chose comme

si déclaration Cela a commencé à fonctionner avec enthousiasme avec facilité J'ai fini d'écrire et j'ai confirmé le comportement ...

Les produits factices ne sont pas affichés!

items_controller.rb



 def index
    @items = Item.order('created_at DESC')
  end

ruby:index.html.erb



####################↓ Afficher les produits enregistrés dans la base de données ↓####################
<ul class='item-lists'>
    <% if @items %>
      <% @items.each do |item| %>
        <li class='list' >
          <%= link_to item_path(item.user_id) do %>
            <div class='item-img-content'>
            </div>
            <div class='item-info'>
              <h3 class='item-name'>
                <%= item.name %>
              </h3>
              <div class='item-price'>
                <span><%= item.price %>Cercle<br>(taxe inclu)</span>
                <div class='star-btn'>
                  <%= image_tag "star.png ", class:"star-icon" %>
                  <span class='star-count'>0</span>
                </div>
              </div>
            </div>
          <% end %>
        </li>
      <% end %>

####################↓ Ce qui suit sont des produits factices ↓####################
    <% else %>
        <li class='list'>
          <%= link_to '#' do %>
          <%= image_tag "https://s3-ap-northeast-1.amazonaws.com/mercarimaster/uploads/captured_image/content/10/a004.png ", class: "item-img" %>
          <div class='item-info'>
            <h3 class='item-name'>
Liste des produits
            </h3>
            <div class='item-price'>
              <span>0 yen<br>(taxe inclu)</span>
              <div class='star-btn'>
                <%= image_tag "star.png ", class:"star-icon" %>
                <span class='star-count'>0</span>
              </div>
            </div>
          </div>
          <% end %>
        </li>
    <% end %>
    </ul>
  </div>

"En bref, si le DB est vide, les variables d'instance seront également vides, non?" Cela fonctionnait sur la base de l'idée

J'étais à ce moment-là

"Lorsque la variable d'instance est vide"

Je me souviens avoir été obsédé par le mot Si seulement cela est supprimé ...! J'étais convaincu que c'était trop mystérieux quand j'y pense maintenant

La confiance est parfois synonyme d'arrêter de penser

Puis, au bout d'une heure, j'ai enfin eu quelques doutes en moi. "... Peut-être que ce n'est pas parce que la table est vide que le contenu de ce que vous générez sera vide, non?" Et le contenu des paramètres

Je me suis souvenu que c'était dans un tableau

Une valeur vide peut être saisie, et même si le contenu est complètement vide, il ne sera pas reconnu comme vide lorsque le tableau existe.

Je dois prouver que c'est une valeur vide, mais ce n'est pas vide

J'ai demandé de l'aide à l'instructeur La réponse renvoyée est

"Si le contenu d'une variable d'instance est vide et que vous voulez renvoyer false, mais qu'un tableau est créé, pourquoi ne pas juger si le nombre d'éléments dans le tableau est 0?"

C'était

En d'autres termes, comme ça!

ruby:index.html.erb


<ul class='item-lists'>
    <% if @items.length != 0 %> #← Ici!
      <% @items.each do |item| %>
        <li class='list' >
          <%= link_to item_path(item.user_id) do %>
#Ce qui suit est omis

Connaître l'interprétation

En d'autres termes

Bien que la base de données soit vide, le contenu de la variable d'instance sera un tableau, jugeons donc si le contenu est vide ou non.

quelque chose comme En passant le nombre de tableaux dans .length et en spécifiant! = 0 S'il n'est pas égal à 0, true sera renvoyé.

Il y avait une compréhension claire et rafraîchissante parce qu'on m'a présenté quelque chose auquel je n'avais jamais pensé. En même temps, il y avait aussi le regret que je pensais: «Avez-vous remarqué cela?

Leçon

La leçon apprise cette fois n'est pas liée à une seule idée Pour voir les choses d'une vue plus à vol d'oiseau

Recommended Posts

if ~ .length! = 0 Trouver une valeur vide
[Rails] [ActiveStorage] Découvrez si un utilisateur particulier possède un avatar