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>
Faites-vous un devoir au lieu d'une comparaison dans la déclaration
if
ici ?