[英]Rails: ActionView::Template::Error while removing row from table using designated .js.erb
我需要在Rails 4.2 中使用jQuery从表中删除行的帮助 。 单击绿色按钮后,我希望删除整行并刷新表格。
至于逻辑,我正在处理文档和用户。 用户能够隐藏文档并将注释附加到特定的隐藏中。 因此,我决定创建其他模型Hiding ,其中包含对User和Document的引用以及其他相关信息:
hiding.rb
class Hiding < ActiveRecord::Base
belongs_to :document
belongs_to :user
end
从另一个角度看, 文档和用户模型具有以下关联:
has_one :hiding
单击绿色按钮后,将调用控制器的取消隐藏操作:
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
但是,当我想通过unhide.js.erb执行表行的删除时
$('#<%=@hiding.document.id%>').remove()
触发以下异常:
ActionView :: Template :: Error(#Hiding :: ActiveRecord_Relation: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
可能您忘记为@hiding添加.first
编辑:
代替where()。first,还可以使用find_by(document_id:params [:id])
find_by的定义如下
def find_by(*args)
where(*args).take
end
现在,就顺序而言,“接单”与“第一”有所不同。 first根据主键的顺序返回第一条记录,而take则返回数据库首先弹出的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.