2013-11-08 1 views
0

В моей таблице много строк, и каждая строка содержит кнопку. Когда кнопка нажата, Он отправит удаленные js в мой метод в контроллере. И он должен удалить строку, в которой находится кнопка.Работает ли этот «объект» в js.erb на Rails 3

Заранее спасибо.

= 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

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

В ответе js вашего сервера новый контекст: window.

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

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

$("#task_#{task_id}").closest("tr").remove() 
Смежные вопросы