[英]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.