Unkooperative Boolesche Logik
P粉343141633
P粉343141633 2024-04-02 13:34:26
0
1
520

Ich habe ein Problem mit meiner Website, das ich seit mindestens ein paar Wochen zu beheben versuche, also hatte ich gehofft, dass mir jemand sagen könnte, wo ich falsch liege. Zum Hintergrund: Ich bin frischgebackener Absolvent und dies ist das Schlussprojekt, das ich für mein Abschlussprojekt erstellt habe. Vor der Demo hatte ich nicht ganz alle Funktionen, die ich wollte, jetzt, da ich den Kurs, den ich versuche, abgeschlossen habe Um eine Einführung zu geben. Funktionen, die meiner Meinung nach fehlen. Abgesehen davon habe ich mithilfe eines Rails-Backends und eines Vue-Frontends mit einem Bootstrap-Thema eine Wunschliste mit Horrorfilmen erstellt, die ich zur Beobachtungsliste hinzufügen und sie entweder zur Liebling-Liste oder zur Hass-It-Liste hinzufügen kann, aber das Letzte, was ich will, ist Denn wenn Sie auf die Schaltfläche klicken, um es zu dieser Liste hinzuzufügen, wird es aus der unbeobachteten Liste entfernt. Ich habe im Backend einen booleschen Wert eingerichtet, aber ich schaffe es beim besten Willen nicht, die Logik richtig hinzubekommen, um ihn von „wahr“ auf „falsch“ umzudrehen. Ich weiß nicht, ob ich etwas im Frontend brauche oder was, aber wie ich schon sagte, wir Ich versuche seit mindestens zwei Wochen, dieses Problem zu lösen, daher wäre jede Hilfe großartig.

Meine Architektur

create_table "hatedits", force: :cascade do |t|
    t.integer "movie_id"
    t.integer "user_id"
    t.string "box_art"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

  create_table "lists", force: :cascade do |t|
    t.integer "user_id"
    t.integer "movie_id"
    t.boolean "watched"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

  create_table "lovedits", force: :cascade do |t|
    t.integer "movie_id"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    t.integer "user_id"
    t.string "box_art"
   end

  create_table "movies", force: :cascade do |t|
    t.string "name"
    t.string "description"
    t.string "box_art"
    t.string "sub_genre"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    t.integer "year"
    t.string "category"
  end

  create_table "users", force: :cascade do |t|
    t.string "name"
    t.string "email"
    t.string "password_digest"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

end

Meine Rails aktualisieren und erstellen Funktionen (ich denke, das ist das Problem, aber ich kann es einfach nicht erkennen.)

def create
    list = List.create(
      user_id: current_user.id,
      movie_id: params[:movie_id],
      watched: false,
    )

    if list.save
      render json: list
    else
      render json: {errors: list.errors.full_messages}, status: 406
    end
  end 


  def update
    list = List.find_by(id: params[:id])
    list.movie_id = params[:movie_id] || list.movie_id
    if watched = true
      render json: list
    end 
 
 

    if list.save
      render json: list
    else
      render json: {errors: list.errors.full_messages}, status: 406
    end 
  end

Ich habe ein Frontend mit Schaltflächen und Methoden zum Wechseln zu verschiedenen Listen, die funktionieren, aber wenn ein Film in die Liste „Gefällt mir“ oder „Gefällt mir nicht“ verschoben wird, wird der Film nicht aus der Liste der nicht angesehenen Filme entfernt,

<template>
  <div class="list">
    <br />
    <br />
    <br />
    <br />
    <br />
    <section id="portfolio" class="portfolio">
      <div class="container">
         <div class="row portfolio-container">
          <div class="col-lg-4 col-md-6 portfolio-item filter-app" v-for="list in lists" 
v-bind:key="list.id">
            <div class="portfolio-wrap">
              <img :src="`${list.movie.box_art}`" />
               <br />

              <div class="portfolio-info">
                <div class="portfolio-links">
                  <button v-on:click="lovedIt(list)">Loved It</button>

                  <br />
                  <br />
                  <button v-on:click="hatedIt(list)">Hated It</button>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </section>
  </div>
</template>

<style>
.list {
  text-align: center;
  color: white;
}
img {
  height: 624px;
  width: 370px;
}
</style>
<script>
import axios from "axios";

export default {
  data: function () {
    return {
      list: {},
      lists: {},
      movie: [],
      currentUser: localStorage.getItem("user_id"),
    };
  },
  created: function () {
    this.indexLists();
  },
  methods: {
    indexLists: function () {
      axios.get("/lists").then((response) => {
        this.lists = response.data;
        console.log("list", response.data);
      });
    },
    addMovie: function () {
      axios.post("/lists", this.movie).then(() => {
        this.$router.push("/lists");
      });
    },
    lovedIt: function (list) {
      this.list = list;
      axios
        .post("/lovedits", {
          user_id: this.currentUser.id,
          movie_id: this.list.movie_id,
        })
        .then(() => {
          console.log("yo");
          this.$router.push("/lovedit");
          location.reload();
        });
    },
    hatedIt: function (list) {
      this.list = list;
      axios
        .post("/hatedits", {
          user_id: this.currentUser.id,
          movie_id: this.list.movie_id,
        })
        .then(() => {
          console.log("sup");
          this.$router.push("/hatedit");
          location.reload();
        });
    },
  },
};
</script>

P粉343141633
P粉343141633

Antworte allen(1)
P粉536532781

您是否在此处的 if 语句中进行赋值而不是比较?

def update
    list = List.find_by(id: params[:id])
    list.movie_id = params[:movie_id] || list.movie_id
    if watched **==** true
      render json: list
    end
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage