[RUBY] if ~ .length! = 0 Finde einen leeren Wert

Leerer Wert

Bei der Implementierung der Funktion zum Anzeigen der als Problem aufgeführten Produkte in einer Liste Ich habe einen bedingten Ausdruck in die if-Anweisung geschrieben

das ist,

Wenn die Instanzvariable leer ist, zeigen Sie stattdessen ein Dummy-Produkt an

etwas wie

if-Anweisung Dies begann mit Leichtigkeit begeistert zu arbeiten Ich beendete das Schreiben und bestätigte das Verhalten ...

Dummy-Produkte werden nicht angezeigt!

items_controller.rb



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

ruby:index.html.erb



####################↓ In DB gespeicherte Produkte anzeigen ↓####################
<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 %>Kreis<br>(Steuern inklusive)</span>
                <div class='star-btn'>
                  <%= image_tag "star.png ", class:"star-icon" %>
                  <span class='star-count'>0</span>
                </div>
              </div>
            </div>
          <% end %>
        </li>
      <% end %>

####################↓ Das Folgende sind Dummy-Produkte ↓####################
    <% 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'>
Auflistung der Produkte
            </h3>
            <div class='item-price'>
              <span>0 Yen<br>(Steuern inklusive)</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>

"Kurz gesagt, wenn die Datenbank leer ist, sind auch die Instanzvariablen leer, oder?" Es funktionierte basierend auf der Idee

Ich war zu dieser Zeit

"Wenn die Instanzvariable leer ist"

Ich erinnere mich, dass ich von dem Wort besessen war Wenn nur das unterdrückt wird ...! Ich war überzeugt, dass es zu mysteriös war, wenn ich jetzt darüber nachdenke

Vertrauen ist manchmal gleichbedeutend mit aufhören zu denken

Dann, nach einer Stunde, hatte ich endlich einige Zweifel an mir. "... Vielleicht bedeutet nur, weil die Tabelle leer ist, nicht, dass der Inhalt dessen, was Sie generieren, leer ist, oder?" Und der Inhalt von Params

Ich erinnerte mich, dass es in einem Array war

Ein leerer Wert kann eingegeben werden, und selbst wenn der Inhalt vollständig leer ist, wird er nicht als leer erkannt, wenn das Array vorhanden ist.

Ich muss beweisen, dass es ein leerer Wert ist, aber er ist nicht leer

Ich bat den Ausbilder um Hilfe Die Antwort lautet:

"Wenn der Inhalt der Instanzvariablen leer ist und Sie false zurückgeben möchten, das Array jedoch generiert wird, können Sie beurteilen, ob die Anzahl der Elemente im Array 0 beträgt."

Es war

Mit anderen Worten, so!

ruby:index.html.erb


<ul class='item-lists'>
    <% if @items.length != 0 %> #← Hier!
      <% @items.each do |item| %>
        <li class='list' >
          <%= link_to item_path(item.user_id) do %>
#Folgendes wird weggelassen

Kennen Sie die Interpretation

Mit anderen Worten

Obwohl die Datenbank leer ist, ist der Inhalt der Instanzvariablen ein Array. Lassen Sie uns also beurteilen, ob der Inhalt leer ist oder nicht.

etwas wie Durch Übergeben der Anzahl der Arrays in .length und Angabe von! = 0 Wenn es nicht 0 ist, wird true zurückgegeben.

Es gab ein klares und erfrischendes Verständnis, weil mir etwas präsentiert wurde, an das ich nie gedacht hatte. Zur gleichen Zeit gab es auch das Bedauern, dass ich dachte: "Hast du es bemerkt?"

Lektion

Die diesmal gewonnene Lektion bezieht sich nicht auf eine Idee Um Dinge aus der Vogelperspektive zu sehen

Recommended Posts

if ~ .length! = 0 Finde einen leeren Wert
[Rails] [ActiveStorage] Überprüfen Sie, ob ein bestimmter Benutzer einen Avatar hat