繁体   English   中英

具有多态关联的Ajax(销毁)

[英]Ajax with polymorphic association (destroy)

我的Rails应用程序中与Resources&Flags有一个多态关联。 用户可以标记每个资源。

我正在尝试通过其编辑页面删除资源标志。 这样,用户可以编辑资源,并通过Ajax消除/销毁其标志。

在数据库中一切正常,但是当我尝试使用ajax删除Flag时,除非刷新页面,否则它将无法正常工作。 我正在使用本教程

这是我的代码...

楷模

class Resource 
  belongs_to :district
  has_many :flags, as: :flaggable, :dependent => :destroy  
end 

class Flag 
    belongs_to :flaggable, polymorphic: true
end

控制器

Resource Controller

  #edit page
  def edit
    @district = District.find_by_abbreviation(params[:district_id])
    @resource = @district.resources.find(params[:id])   
    @flaggable = @resource
    @flags = @resource.flags.all 
  end

end

Flags Controller

  def destroy
    @flag = Flag.find(params[:id])
    @flaggable = @flag.flaggable
    if @flag.destroy
      respond_to do |format|
        format.html { redirect_to @flaggable }
        format.js
      end
    end
  end

end

观看次数

edit.html.erb-资源编辑页面

#renders all flags associated with this resource
<div id="flags">
  <%= render @flags %>
</div>

<div>
   #Code that holds edit form
</div>

_flag.html.erb

###delete action to destroy a flag
<div id="dom_id(flag)">

  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
    <span aria-hidden="true"><%= link_to '&times;'.html_safe, [@flaggable, flag], method: :delete, data: { confirm: "Are you sure you want to delete this flag?" }, remote: true  %></span>
  </button>

  <%= flag.message %>
</div>

destroy.js.erb

###I am not sure if this is correct...
$('#flags #<%= dom_id(@flag) %>').remove();

我相信问题出在您的_flag.html.erb部分

它应该是<div id="<%= dom_id(flag) %>">而不是<div id="dom_id(flag)">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM