2012-06-14 75 views
0

我有一個嵌套的表格結構如下:嵌套表格 - 阿賈克斯刪除

class List < ActiveRecord::Base 
has_many :restaurants, :dependent => :destroy 
end 

class Restaurant < ActiveRecord::Base 
    belongs_to :list 
end 

我可以在我創建/編輯列表相同的形式添加餐廳項目特定列表。爲了嵌套列表形式我做了以下範圍內的餐飲項目:

<%= f.fields_for :restaurants do |builder| %> 
     <%= render 'restaurant_fields', f: builder %> 
<% end %> 
<%= link_to_add_fields "+ add to stack", f, :restaurants %> 

的餐館場部分有一個鏈接刪除項目:這些行動

<%= link_to "remove stack item", '#', class: "remove_fields" %> 

了jQuery(CoffeeScript的)如下:

jQuery -> 
    $('form').on 'click', '.remove_fields', (event) -> 
    $(this).prev('input[type=hidden]').val('1') 
    $(this).closest('fieldset').hide() 
    event.preventDefault() 

    $('form').on 'click', '.add_fields', (event) -> 
    time = new Date().getTime() 
    regexp = new RegExp($(this).data('id'), 'g') 
    $(this).before($(this).data('fields').replace(regexp, time)) 
    event.preventDefault() 

當我點擊刪除棧的項目,我想送一個Ajax請求,以使堆項目(餐廳)不只是從視圖中隱藏(見上文),而且日e實際記錄同時被刪除。你會如何建議我去做這件事?

+0

看看這個http://railscasts.com/episodes/197-nested-model-form-part-2?view=asciicast這將是這些好的教程種類的東西 – abhas

回答

0

您可以通過在_destroy參數去這樣做的: 例如,從客戶端接收的屬性:

"restaurant" => { "stack_item" => { "id" => "987", "_destroy" => "1" } } 

您將需要啓用:對在Restaurant模型的關聯allow_destroy選項了。

更多,請參閱:Active Record Nested Attributes