Страницы

Поиск по вопросам

суббота, 13 июля 2019 г.

Как удалить обьект из бд, на сайте на Rails 5?

Гуглил. Нашел способ в этой статье, но не помогло. часть вьюхи
<%= link_to 'Destroy', client, method: :delete, data: { confirm: 'Are you sure?' } %> <%= link_to 'Destroy', client_path(client), method: :delete, data: { confirm: 'Are you sure?' } %> Destroy Destroy
первые два способа просто показывают клиента, но не удаляют его, последние два генерируют Routing Error No route matches [GET] "/clients/2/destroy" или No route matches [GET] "/clients/2/delete" часть контроллера
def destroy @client.destroy respond_to do |format| format.html { redirect_to clients_url } format.json { head :no_content } end end
команда rake routes выдает


Ответ

3-й и 4-й способы потребуют от вас написания дополнительного кода в контроллере, но я бы их не использовал. Они семантически некорректны - GET-запросы не должны менять ресурс. В случае с удалением ресурса, целесообразно использовать DELETE-запросы.
2-й способ в вашем случае идентичен первому, так как в роутах у вас указано resources :clients без нестандартных параметров и без дополнительной вложенности.
1-й способ написан корректно, но чтобы он работал - вам нужно подключить в проекте (в application.js) небольшое js-решение от Rails:
Для Rails 5.1 это rails-ujs Для Rails ранних версий - jquery_ujs
Подключите нужную библиотеку в вашем application.js
//= require rails-ujs
, и убедитесь, что в вашем собственном javascript коде нет ошибок, так как их наличие может мешать выполнению кода в rails-ujs. Обычно такие ошибки можно увидеть в инспекторе объектов вашего браузера (например в Google Chrome на вкладке Console).

Комментариев нет:

Отправить комментарий