Javascript Rails:ActionView::Template::使用指定的.js.erb从表中删除行时出错

Javascript Rails:ActionView::Template::使用指定的.js.erb从表中删除行时出错,javascript,jquery,ruby-on-rails,ruby,Javascript,Jquery,Ruby On Rails,Ruby,我需要帮助使用Rails 4.2中的jQuery从表中删除行。单击绿色按钮后,我希望删除整行并刷新表 至于逻辑,我正在处理文档和用户。用户可以隐藏文档并将注释附加到特定的隐藏位置。因此,我决定创建额外的模型隐藏,其中包含对用户和文档的引用以及其他相关信息: 隐藏.rb class Hiding < ActiveRecord::Base belongs_to :document belongs_to :user end $('#<%=@hiding.document.id%&

需要帮助使用Rails 4.2中的jQuery从表中删除行。单击绿色按钮后,我希望删除整行并刷新表

至于逻辑,我正在处理文档和用户。用户可以隐藏文档并将注释附加到特定的隐藏位置。因此,我决定创建额外的模型隐藏,其中包含对用户文档的引用以及其他相关信息:

隐藏.rb

class Hiding < ActiveRecord::Base
  belongs_to :document
  belongs_to :user
end
$('#<%=@hiding.document.id%>').remove()
单击绿色按钮后,将调用控制器的取消隐藏操作:

class Admin::HidingsController < AdminController
  authorize_resource

  def index
    @hidings = Hiding.all.page params[:page]
  end

  def unhide
    @hidings = Hiding.all.page params[:page]
    @hiding = Hiding.where(document_id: params[:id])

    # update document and delete hiding from DB 
    search_un_hide_document(false, nil)
  end
end
class Admin::HidingsController
但是,当我想通过unhide.js.erb执行表行删除时

class Hiding < ActiveRecord::Base
  belongs_to :document
  belongs_to :user
end
$('#<%=@hiding.document.id%>').remove()
$('#')。删除()
将触发以下异常:

ActionView::Template::Error(隐藏::ActiveRecord_关系:0x0000000c4508d8>的未定义方法“document”)

由于我是Rails的新手,我已经在这方面停留了一段时间。但是,无法理解如何在不重新呈现整个页面的情况下正确删除这些行

非常感谢您的建议。提前谢谢

def unhide
   @hidings = Hiding.all.page params[:page]
   @hiding = Hiding.where(document_id: params[:id]).first

   # update document and delete hiding from DB 
   search_un_hide_document(false, nil)
end
可能你忘了添加。首先是@hidden

编辑:

而不是where()。首先,还可以使用find_by(document_id: 参数[:id])

find_by的定义如下

def find_by(*args)
  where(*args).take
end

现在,“take”与“first”在顺序上有所不同。first根据主键的顺序返回第一条记录,take返回数据库首先输出的任何结果。

因为他只需要一个结果,所以应该隐藏它。find_by(document_id:params[:id]),但where()。first也会这样做。@Jolly程序员推荐您。更新了答案。