[英]delete and update a object of associated model using ajax and rails
我有两个模型。 可以说defects
和products
。
product has_many :defects
defect belongs_to :product
1)我在展示页面上列出了产品的所有相关缺陷
我想在产品展示页面中包括针对缺陷的edit
和delete
操作。 默认情况下,删除操作是删除产品,因为控制器中的产品( @product.destroy
)调用了destroy函数。如何删除选定的缺陷?
2)为了创建缺陷,我在缺陷控制器中包含了以下js脚本( create.js.erb
)
var html = "<p> <%= @product.defect.try(:defect_description) </p>"
$('#added').append(html);
这是行不通的,因为两者之间的关联很多。如何附加输入的缺陷? 我正在使用产品展示页面中的表格
这是产品展示页面代码,我在其中列出缺陷并添加
<button class="mybtn">Defects </button>
</div>
<div id="clicked">
<% if @product.defects.present? %>
<% @product.defects.each do |defect|%>
<p> <%= defect.try(:defect_description) %> <%= link_to 'Delete', defect, method: :delete, data: { confirm: "Are you sure you want to delete ?"},class: "btn btn-danger btn-xs" %></td></p>
<% end %>
<%= link_to "Add Defects",new_product_defect_path(@product.id),class:'btn btn-sm btn-success',remote:true%>
<% else %>
<p id="new_defect"> No defects found for this product </p>
<%= link_to "Add Defects",new_product_defect_path(@product.id),class:'btn btn-sm btn-success',remote:true%>
<%end%>
</div>
要通过编辑/删除操作列出产品的所有缺陷,在产品显示页面中,您将具有以下内容:
<% @product.defects.each do |defect| %>
<%= defect.description %>
<%= button_to 'Edit', edit_product_defect_path(@product, defect)
<%= button_to 'Delete', product_defect_path(@product, defect), method: :delete
<% end %>
对于已创建的缺陷,您应该可以访问该缺陷,以便可以相应地修改append语句。
var html = "<p> <%= @defect.defect_description </p>";
html += "<%= button_to 'Edit', edit_product_defect_path(@product, defect)";
$('#added').append(html);
产品/ show.html.erb
<div id="clicked">
<%= render 'product_defects' %>
</div>
产品/ _product_defects.html.erb
<% if @product.defects.present? %>
<% @product.defects.each do |defect|%>
<p>
<%= defect.try(:defect_description) %>
<%= link_to 'Delete', defect, method: :delete, data: { confirm: "Are you sure you want to delete ?"},class: "btn btn-danger btn-xs" %></td>
</p>
<% end %>
<%= link_to "Add Defects",new_product_defect_path(@product.id),class:'btn btn-sm btn-success',remote:true%>
<% else %>
<p id="new_defect"> No defects found for this product </p>
<%= link_to "Add Defects",new_product_defect_path(@product.id),class:'btn btn-sm btn-success',remote:true%>
<% end %>
当您点击Add Defects
按钮时,ajax请求将被发送到DefectsController's create action
。 您需要获取要为其添加缺陷的产品, _product_defects.html.erb
如下所示呈现_product_defects.html.erb
:
缺陷/ create.js.erb
$("#clicked").html("<%= render 'products/product_defects' %>");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.