Rails удаленное удаление и обновление представления через Ajax

В прошлом, когда я хотел обновить часть своего представления через Ajax, я делал следующее:

создайте частичный элемент из части, которую я хочу обновить, и дайте ему уникальный идентификатор, скажем#tracksсоздать специальное действие в контроллере для этого вызова Ajax, скажем,remove_track который обновляет все значения и т. д. и добавляетformat.jsсоздайте новый файл JS с тем же именем, что и действие, чтобы Rails вызывал его автоматическиremove_track.js.erb который содержит что-то вроде:$('#tracks').html("<%=j render 'cds/show_tracks' %>");установленremote: true в ссылке, которая вызывает это действие.

Все это нормально, но сейчас я пытаюсь удалить и обновить общийindex просматривать с помощью обычногоdestroy метод для гибкости, то есть я могу вызвать этот метод либо через Ajax, либо нормально. Я подумал, что это настолько распространенная вещь, что должен быть лучший способ, чем все вышеперечисленное.

Я могу получить метод уничтожения, чтобы вызвать мойdestroy.js.erb файл, просто поместив это в контроллер:

  format.js { layout: false }

и конечно же установкаremote: true по ссылке.

то, что я не могу сделать, это получить представление, чтобы обновить. Таблица, которую я хочу обновить, заключена в элемент div с уникальным идентификатором, но, поскольку она не является частичной, она отказывается обновлять содержимое. Может быть, я что-то упустил.

Обречен ли я создавать частичное и обновлять его описанным выше способом, или есть ли более магический способ сделать это (кроме использования Turbolinks)?

Благодарю.

PS Кроме того, я только что заметил, что в этом есть дополнительный недостаток, заключающийся в том, что я не могу передать остальные параметры методу уничтожения, поскольку он передает только идентификатор объекта для уничтожения с использованием обычных маршрутов CRUD. Если я попытаюсь использоватьplatform(action: destroy) или жеplatform(method: delete) Я получаю ошибку:

No route matches {:action=>"destroy", :controller=>"platforms"}

Что означает, что я должен создать новый маршрут, если я хочу передать эти параметры ...

Еще один недостаток всего этого заключается в том, что я повторяю всю логику поиска и сортировки, которая у меня есть в методе index, снова в методе destroy. Я уверен, что этоточно нет способ сделать это.

Ответы на вопрос(1)

Ваш ответ на вопрос