So I have now added some data to the "rescind emeritus request" button [1].
This data is the file name from the emeritus_request, and it is also now data 
available to the submit function. (If there is a better way to do this, please 
let me know.)

The data is read in the submit function [2]. But it doesn't work. What is the 
right way to send additional data fields in the POST request? I have verified 
via the console log that the data (emeritus_file_name) is proper, but I get an 
exception trying to put it into the formData. 
TypeError: undefined is not an object (evaluating 'formData.push') line 371

What I'm trying to do is to have the file name available to the memstat.json.rb 
file that handles the POST request. Is the entire committer transmitted on the 
POST, or just the few changed fields?

Thanks,
Craig

[1]             if (owner)
               if committer.member.status.include? 'Active'
                 emeritus_file_name = committer.forms['emeritus_request']
                 if committer.forms['emeritus_request']
                   console.log('owner emeritus file is: ' + 
committer.forms['emeritus_request'])
                   _button.btn.btn_primary 'rescind emeritus request',
                     data_emeritus_file_name:emeritus_file_name,
                     name: 'action', value: 'rescind_emeritus'
                 else
                   _button.btn.btn_primary 'request emeritus status',
                     name: 'action', value: 'request_emeritus'
                 end
               elsif committer.member.status.include? 'Emeritus'
                 _button.btn.btn_primary 'request reinstatement',
                   name: 'action', value: 'request_reinstatement'
               end

[2] # submit form using AJAX
  def submit(event)
    event.preventDefault()
    form = jQuery(event.currentTarget).closest('form')
    target = event.target

    # if (cancel) button is pressed, don't submit but remove @edit form
    cancel_submit = target.getAttribute('data-cancel-submit')

    if cancel_submit
      # remove the edit buttons and return
      @edit = nil
      return
    end

    # if additional data, add it to formData
    emeritus_file_name = target.getAttribute('data-emeritus-file-name')
    console.log('submit emeritus_file_name: ' + emeritus_file_name)
    if emeritus_file_name
371:      formData.push name: 'emeritusfilename', value: emeritus_file_name
    end
    # serialize form
    formData = form.serializeArray();

    # add button if it has a value
    if target and target.getAttribute('name') and target.getAttribute('value')
      formData.push name: target.getAttribute('name'),
        value: target.getAttribute('value')
    end


Craig L Russell
c...@apache.org

Reply via email to