Laravel, inertiajs и vuejs

Я работаю над проектом с использованием laravel, inertiajs и vuejs. Я всегда получаю 404 | Ошибка НЕ ​​НАЙДЕНА при попытке удалить пользователя из базы данных. Я хочу удалить пользователя, когда нажимаю кнопку с методом deleteUser. Что может быть не так?

Маршрут

Route::delete('/destroy/{user}', [AppController::class, 'destroy'])->name('users.destroy');

Контроллер

public function destroy(User $user)
    {
        $user->delete();
    }

vue

<template>
    <app-layout>
        <div v-for="user in users" :key="user.id">
            <div class="flex bg-white border px-6 py-6 rounded-sm max-w-2xl mx-auto mt-6">
                <img :src="user.profile_photo_url" alt="Image" class="h-14 w-14 rounded-full"/>
                <div class="flex-1">
                    <span class="ml-2 text-lg text-black font-semibold">
                        {{user.name}}
                    </span>
                    <span class="float-right ml-2">
                        <button @click="deleteUser" class="border border-purple-300 px-4 py-1 rounded-full text-purple-600 hover:bg-purple-600 hover:text-white hover:border-transparent">Follow</button>
                    </span>
                    <br/>
                    <span class="ml-2 text-gray-500 font-medium">
                        Laravel and Vuejs
                    </span>
                </div>
            </div>
        </div>
    </app-layout>
</template>

<script>
    import AppLayout from '@/Layouts/AppLayout'

    export default {
        components: {
            AppLayout,
        },

        props: ['users'],

        data(){
            return{
                form:{
                    user_id:''
                }
            }
        },

        methods:{
            deleteUser() {
            if (confirm('Are you sure you want to delete this contact?')) {
                this.$inertia.delete(`/destroy/${this.users.id}`)
                .then(() => {
                })
            }
            }
        }
    }
</script>

person Joseph Kamande Maina    schedule 04.03.2021    source источник
comment
какой у вас полный URL? сгенерирован laravel   -  person Kamlesh Paul    schedule 04.03.2021
comment
в браузере вы используете public url или `pretty url?   -  person Kamlesh Paul    schedule 04.03.2021
comment
localhost: 8000 / users - мой URL   -  person Joseph Kamande Maina    schedule 04.03.2021
comment
Ваш метод запроса УДАЛИТЬ?   -  person Robert Rocha    schedule 06.03.2021


Ответы (2)


Вы можете передать данные в свой метод следующим образом:

<button @click="deleteUser(user)">Delete</button>

methods: {
deleteUser: function(user){
this.$inertia.delete(this.route('users.destroy'), user))
}}

Это связано с тем, что ваш метод удаления в пользовательском контроллере запрашивает пользовательскую переменную.

person Pepe    schedule 06.03.2021

Действие удаления должно принимать в качестве аргумента текущего пользователя из итерации.

<button @click="delete(user)" class="border border-purple-300 px-4 py-1 rounded-full text-purple-600 hover:bg-purple-600 hover:text-white hover:border-transparent">Follow</button>

Затем вы должны передать идентификатор пользователя в качестве параметра для маршрута удаления:

methods: {
    delete(user) {
        if (confirm('Are you sure you want to delete this contact?')) {
            this.$inertia.delete(`/destroy/${user.id}`);
        }
    }
}
person cdruc    schedule 05.05.2021