Logique booléenne peu coopérative
P粉343141633
P粉343141633 2024-04-02 13:34:26
0
1
531

J'ai un problème avec mon site que j'essaie de résoudre depuis au moins quelques semaines, j'espérais donc que quelqu'un pourrait m'indiquer où je me trompe. Pour vous donner un aperçu, je suis un jeune diplômé et c'est le projet de synthèse que j'ai construit pour mon projet final. Avant la démo, je n'avais pas vraiment obtenu toutes les fonctionnalités que je voulais, maintenant que j'ai terminé le cours, j'essaie pour donner une introduction aux fonctionnalités qui, à mon avis, manquent. Cela étant dit, j'ai construit une liste de souhaits de films d'horreur en utilisant un backend Rails et une interface Vue avec un thème Bootstrap que je peux ajouter à la liste de surveillance et soit les ajouter à la liste des favoris, soit les détester, mais la dernière chose que je veux est car lorsque vous cliquez sur le bouton pour l'ajouter à ladite liste, il le supprime de la liste des non surveillés. J'ai un booléen configuré sur le backend mais pour ma vie, je n'arrive pas à comprendre la bonne logique pour le faire passer de vrai à faux. Je ne sais pas si j'ai besoin de quelque chose sur le frontend ou quoi, mais comme je l'ai dit, je nous J'essaie de résoudre ce problème depuis au moins deux semaines maintenant, donc toute aide serait précieuse.

Mon Architecture

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

Mes Rails mettent à jour et créent des fonctions (je pense que c'est le problème, mais je ne le vois tout simplement pas.)

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

J'ai une interface avec des boutons et des méthodes pour passer à différentes listes qui fonctionnent, mais lorsqu'un film est déplacé vers la liste des "J'ai aimé" ou "Je n'ai pas aimé", il ne supprime pas le film de la liste des films non regardés,

<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

répondre à tous(1)
P粉536532781

Faites-vous un devoir au lieu d'une comparaison dans la déclaration if ici ?

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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal