簡體   English   中英

使用ajax和rails刪除和更新關聯模型的對象

[英]delete and update a object of associated model using ajax and rails

我有兩個模型。 可以說defectsproducts

product has_many :defects

defect belongs_to :product

1)我在展示頁面上列出了產品的所有相關缺陷

我想在產品展示頁面中包括針對缺陷的editdelete操作。 默認情況下,刪除操作是刪除產品,因為控制器中的產品( @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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM