导轨嵌套模型形式:加载时而不是点击时

Rails nested model forms: on load rather than on click

本文关键字:加载 嵌套 模型      更新时间:2023-09-26

所以我有这个单击方法来添加嵌套表单,它工作得很好。

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

但是在加载时我需要触发上述发明一次,然后单击它也应该触发事件。所以我添加了下面的代码

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

在上面添加加载事件后的事件,它不会触发事件。但是点击事件仍然有效并完美地添加嵌套表单。我怎样才能让它工作?

好的,你的事件不对,你需要page:load,只是load由于涡轮链接而不起作用。你也在重复自己...请允许我给你一个更好的实现:

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

以上肯定会起作用,而且写得很好。