Работает ли этот объект в js.erb на Rails 3

0

В моей таблице много строк, и каждая строка содержит кнопку. Когда кнопка нажата, она отправит удаленные 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();

1 ответ

1

На странице, когда вы нажмете кнопку, форма будет отправлена. Слушатель событий выполнил свою работу и вернулся. Контекст закрыт. Вы не можете больше обращаться к this в этом контексте.

В ответе сервера js новый контекст - это window.

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

Затем в ответе сервера назначьте это действие определенной строке, например

$("#task_#{task_id}").closest("tr").remove()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню