recherche

Maison  >  Questions et réponses  >  le corps du texte

Logique booléenne peu coopérative

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粉343141633P粉343141633260 Il y a quelques jours523

répondre à tous(1)je répondrai

  • P粉536532781

    P粉5365327812024-04-03 10:10:21

    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

    répondre
    0
  • Annulerrépondre