[RAILS] Zeigen Sie den Durchschnittswert der Bewertung als Stern an

Beschreibt, wie der Durchschnittswert der Bewertung jedes Geschäfts auf der Listenanzeigeseite angezeigt wird! Das Bild sieht so aus. 1b1a25ccb85f56b8e0a1b46837bd6cd6.png

Diese Implementierung ist Farstep [Programmierkurs] [[Ruby on Rails] Erstellen wir eine Sternüberprüfungsfunktion (TEIL 1) So erstellen Sie eine Sternebewertung mit Ruby on Rails](https://www.youtube.com/watch? v = NOOYABsAip0) wird als Referenz verwendet.

Nutzungsumgebung

ruby 2.6.5 Ruby on Rails 6.0.3.3 Bootstrap 4 wird für einige Ränder verwendet.

Implementierungsdetails

Modellimplementierung

model



class Laundry < ApplicationRecord
  def avg_score
    unless self.comments.empty?
      comments.average(:rate_id).round(1)
    else
      0.0
    end
  end
  
 def avg_score_percentage
   unless self.comments.empty?
     comments.average(:rate_id).round(1).to_f*100/5
   else
     0.0
   end
 end
end

Zunächst wird der Durchschnittswert berechnet, wenn der Kommentar vorhanden ist, je nachdem, ob er leer ist oder nicht. Verwenden Sie die Durchschnittsmethode, um den Durchschnittswert der Spaltennamen zu ermitteln. Durch Setzen von round (1) wird es auf die zweite Ziffer gerundet.

Die Methode avg_score_percentage berechnet den Prozentsatz und übergibt ihn an die Ansicht.

Implementierung anzeigen

Der Code ist unten.

html


<div class="average-score mb-3">
 <div class="star-rating ml-2">
   <div class="star-rating-front" style="width: <%= laundry.avg_score_percentage %>%">★★★★★</div>
   <div class="star-rating-back">★★★★★</div>
 </div>
 <div class="average-score-display">
   (<%= laundry.avg_score %>Punkt)
 </div>
</div>

css



.average-score {
  display: flex; //★ und zeigt nebeneinander
  justify-content: center;
}

.star-rating {
  position: relative;
  width: 5em;
  height: 1em;
  font-size: 17px;

}
.star-rating-front {
  position: absolute;
  top: 0;
  left: 0;
  overflow: hidden; //Blenden Sie den Teil aus, der über die angegebene Breite hinausgeht.
  white-space: nowrap; //Vermeiden Sie das Umwickeln, wenn die Breite nicht ausreicht.
  color: #ffcc33;
  height: 25px;
}
.star-rating-back {
  color: #ccc;
}

Wir werden es implementieren, indem wir zwei 5 Sterne (★★★★★) vorbereiten und die beiden überlagern. ・ .Star-Rating-Front ・ ・ ・ Geben Sie die Breite an, indem Sie den gelben Sternteil oben mit "width: <% = laundry.avg_score_percentage%>%` `überlagern. ・ .Star-Rating-Back`` ・ ・ ・ Füllen Sie den grauen Stern, den Teil, der nicht gelb wurde, indem Sie ihn darunter platzieren.

Ich denke, die folgenden zwei Punkte sind die Punkte.

  1. Geben Sie overflow: hidden; an. Durch Angabe von overflow: hidden; wird der Teil, der über die angegebene Breite hinausgeht, ausgeblendet und der graue Stern dahinter angezeigt. Wenn Sie dies nicht angeben, wird der Teil, der über die Breite hinausgeht, auch dann nicht ausgeblendet, wenn Sie die Breite angeben. Daher wird er immer mit 5 Sternen bewertet. Überlauf: versteckt; keine 2609974bbcd16eb7c656c6b0494fe206.png

  2. Wenn Sie white-space: nowrap; einstellen, wird es nicht umgebrochen, wenn die Breite nicht ausreicht. Wenn Sie dies angeben, werden die Punkte nach dem Dezimalpunkt auch in den Sternen wiedergegeben. Leerraum: nowrap; Ja 44bdcca4dc3ecd2c6133f7dd72db666b.png

white-space: nowrap; none ea00e4658620d7173e5f742fd6b5a946.png

Sie können jetzt die durchschnittliche Bewertung als Stern anzeigen!

Recommended Posts

Zeigen Sie den Durchschnittswert der Bewertung als Stern an
Erstellen Sie einen benutzerdefinierten Formatierer für Yellowfin und zeigen Sie das Minus des numerischen Werts mit △ (Dreieck) an.
So ermitteln Sie den Gesamtwert, den Durchschnittswert usw. eines zweidimensionalen Arrays (mehrdimensionales Array) -java
Extrahiert den Wert von HashMap und gibt das nach dem Wert von value sortierte Ergebnis als Liste zurück.
Übergeben Sie ein Argument an die Methode und erhalten Sie das Ergebnis der Operation als Rückgabewert
So zeigen Sie 0 auf der linken Seite des Standardeingabewerts an
Ein Memorandum über das FizzBuzz-Problem
Lassen Sie uns eine TODO-App in Java 5 erstellen. Schalten Sie die Anzeige von TODO um
[Ruby] Zeigt den Inhalt von Variablen an
Beispielprogramm, das den Hashwert einer Datei in Java zurückgibt
So ändern Sie den Wert einer Variablen an einem Haltepunkt in IntelliJ
Zeigen Sie Text über dem Bild an
Samshin über den Wert des versteckten Feldes
Finden Sie den Unterschied von einem Vielfachen von 10
Rufen Sie den in der Controller-Klasse von Spring Boot definierten Pfad als Liste ab
Legen Sie die Quelle der Bibliothek als Abhängigkeit in IntelliJ als separates Modul des Projekts fest
Machen Sie einen Rand links vom TextField
Messen Sie die Größe eines Ordners mit Java
Stellen Sie die Zeit von LocalDateTime auf eine bestimmte Zeit ein
[Ruby] Code zur Anzeige des Tages
So zeigen Sie das Ergebnis des Ausfüllens des Formulars an
Geben Sie den Standardwert mit @Builder of Lombok an
[Ruby on Rails] Ranglistenanzeige (Gesamt, Durchschnittswert)
[Jackson] Eine Geschichte über das Konvertieren des Rückgabewerts des Big Decimal-Typs mit einem benutzerdefinierten Serializer.
[Rails] Ich möchte das Linkziel von link_to auf einer separaten Registerkarte anzeigen
Beispielcode zum Zuweisen eines Werts in der Eigenschaftendatei zu einem Feld des erwarteten Typs