【问题标题】:rails - dynamic select menus within nested_form_forrails - nested_form_for 中的动态选择菜单
【发布时间】:2012-11-01 14:12:57
【问题描述】:

我以通常的方式使用nested_form_for,但我想为嵌套子级添加动态选择菜单。

我有以下咖啡脚本(改编自'dynamic-select-menus' 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。

有没有人有更好的方法在嵌套表单中实现动态选择菜单?

【问题讨论】:

    标签: ruby-on-rails nested-form-for


    【解决方案1】:

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

    例如,如果您正在加载部分内容,您可以使用 Javascript 的替换来更改默认 ID。

    【讨论】:

      【解决方案2】:

      我用这个代码解决了它:

      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")
      

      【讨论】:

        猜你喜欢
        • 2015-03-03
        • 1970-01-01
        • 2012-06-16
        • 1970-01-01
        • 2015-12-28
        • 1970-01-01
        • 1970-01-01
        • 2021-04-14
        • 2016-12-20
        相关资源
        最近更新 更多