“this”对象是否适用于Rails 3上的js.erb

时间:2013-11-08 07:15:43

标签: javascript jquery ruby-on-rails erb

我的表中有很多行,每行包含一个按钮。 单击按钮时, 它会将远程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 个答案:

答案 0 :(得分:1)

在页面上,当您单击按钮时,将提交表单。事件监听器完成了他的工作并返回。上下文关闭。您无法再在该上下文中访问this

在您服务器的响应js中,新上下文为window

要解决您的问题,首先您需要根据任务的ID为每行分配唯一ID。

然后,在服务器响应中,将此操作分配给特定行,如

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