Sha256: e5cb9627a8ddcd55b6464024152b9fd2e9bf5469fcac5053fd85f504a92784b7

Contents?: true

Size: 698 Bytes

Versions: 61

Compression:

Stored size: 698 Bytes

Contents

module DependentFieldsFrameHelper
  def accept_query_string_override_for(form, method)
    field_name = form.field_name(method)

    new_value = new_value_from_query_string(field_name)
    return if new_value.nil?

    form.object[method] = new_value
  end

  private

  def new_value_from_query_string(field_name)
    params.dig(*params_dig_path_for_field_name(field_name))
  end

  def params_dig_path_for_field_name(field_name)
    dig_path = []

    nested_keys = Rack::Utils.parse_nested_query(field_name)

    while !nested_keys.nil? && nested_keys.keys.size
      key = nested_keys.keys.first
      dig_path << key.to_sym
      nested_keys = nested_keys[key]
    end

    dig_path
  end
end

Version data entries

61 entries across 61 versions & 1 rubygems

Version Path
bullet_train-fields-1.5.2 app/helpers/dependent_fields_frame_helper.rb