我有一个嵌套的表单结构如下:
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 请求,以便堆栈项(餐厅)不仅从视图中隐藏(见上文),而且同时删除实际记录。你会建议我怎么做?