В моей таблице много строк, и каждая строка содержит кнопку. Когда кнопка нажата, она отправит удаленные js в мой метод в контроллере. И он должен удалить строку, в которой находится кнопка.
Заранее спасибо.
= form_tag kill_running_task_remote_focus_path, :method => :get, remote: true do
def kill_running_task
# binding.pry
# kill_task(params)
respond_to do |format|
# format.html # new.html.erb
format.js
# format.js { render :action => 'add_to_cart'}
end
end
И я поместил следующий код в свой kill_running_task.js.erb. Если я поставил предупреждение, он работает, потому что я могу видеть окна предупреждений. Но он не может удалить строку в таблице.
$(this).closest("tr").remove();
На странице, когда вы нажмете кнопку, форма будет отправлена. Слушатель событий выполнил свою работу и вернулся. Контекст закрыт. Вы не можете больше обращаться к this
в этом контексте.
В ответе сервера js новый контекст - это window
.
Чтобы решить вашу проблему, во-первых, вам нужно назначить уникальный идентификатор каждой строке в соответствии с идентификатором задачи.
Затем в ответе сервера назначьте это действие определенной строке, например
$("#task_#{task_id}").closest("tr").remove()