Я пытаюсь заставить кнопку удалить элемент, который является событием. Для этого мне нужно выполнить запрос на удаление ajax и настроить контроллер событий и route.rb.
Это в моем файле hbs, где у меня есть кнопка:
<button class="event__delete-btn" {{action 'remove' model}}>Delete</button>
Это моя функция удаления действия в event.js:
actions:{
remove: function (model) {
console.log(model.id);
Ember.$.ajax({
method: "DELETE",
url: ":"+model.id
})
}
}
Это мой контроллер событий, я только добавил функцию уничтожения:
class EventsController < ApplicationController
def index
render json: Event.all
end
def show
render json: Event.find_by(slug: params[:slug])
end
def destroy
@event = Event.find(params[:id])
@event.destroy
render json: {}
end
def create
event = Event.new(filtered_params)
if event.save
render json: event
else
render json: { errors: event.errors }, status: 422
end
end
private
def filtered_params
params.require(:event).permit(
:name,
:description,
:location,
:event_date,
:start_time,
:end_time,
:contact
)
end
end
Это маршруты, которые у меня есть в route.rb, я добавил удалить:
get 'events' => 'events#index'
get 'events/:slug' => 'events#show'
post 'events' => 'events#create'
delete '/event/:id' => 'events#destroy'
Но всякий раз, когда я нажимаю «Удалить», я получаю: DELETE http: // localhost: 4200 / event /: 1 404 (Не найдено) Я новичок в ember и rails, так что я сделал не так?
Всего 1 ответ
Вам не нужно писать :
в URL, прежде чем ваш идентификатор. Так что в этом случае /event/:id
переводится в /event/1
. Ваш полный запрос ajax должен быть таким:
Ember.$.ajax({
method: "DELETE",
url: model.id
})