> On May 31, 2020, at 6:15 AM, Sam Ruby <ru...@intertwingly.net> wrote:
>
> On Sun, May 31, 2020 at 12:34 AM Craig Russell <apache....@gmail.com> wrote:
>>
>> 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
>
> Move line 371 after what is line 374 in the code below.
That worked. Looking back it should have been obvious that it needed to be done
only after creating formData.
For readability, would it be better to modify the form variable before creating
formData?
Thanks
Craig
>
>> 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
>
> - Sam Ruby
>
>> [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
>>
Craig L Russell
c...@apache.org