-->

轨 - nested_form_for内动态的选择菜单(rails - dynamic selec

2019-08-02 16:26发布

我使用的常规方式nested_form_for但我想动态的选择菜单添加到嵌套子。

我有以下的咖啡脚本(改编自“动态选择菜单” railscast )

jQuery ->
  $( ".controls-row" ).each ->
    $(this).bind "change", ->
      type = $('#expense_type :selected').text()
      if (type == "miles")
        $('#amount_currency').hide()
        $('#km_traveled').show()
      else 
        $('#amount_currency').show()
        $('#km_traveled').hide()

这段代码的问题是,它只能与第一个嵌套元素的工作。 我尝试添加唯一的ID对每个元素但只适用于现有元素。 新元素的“蓝图”元素的所有克隆,都会有相同的ID。

有没有人有嵌套表格内实现动态选择菜单的更好的办法?

Answer 1:

只需使用正则表达式的“蓝图” ID更改为独特的东西。

例如,如果要加载的部分,你可以使用JavaScript的替换更改默认的ID。



Answer 2:

我使用此代码soved它:

jQuery ->
  $(document).on "nested:fieldAdded", (event) ->
    $( ".controls-row" ).each ->
        $(this).find('#expense_type').bind "change", ->
            type = $(this).parent().find('#expense_type :selected').text()
            if (type == "km")
                $(this).parent().find('#payment_method').addClass('hidden').hide()              
                $(this).parent().find('#amount_in_currency').addClass('hidden').hide()
                $(this).parent().find('#amount_currency').addClass('hidden').hide()
                $(this).parent().find('#km_traveled').removeClass('hidden').show()
            else 
                 $(this).parent().find('#payment_method').removeClass('hidden').show()
                 $(this).parent().find('#amount_currency').removeClass('hidden').show()
                 $(this).parent().find('#amount_in_currency').removeClass('hidden').show()
                 $(this).parent().find('#km_traveled').addClass('hidden').hide()
        $(this).find('#expense_type').trigger('change')

  $(document).trigger("nested:fieldAdded")


文章来源: rails - dynamic select menus within nested_form_for