Saving changes before the user leaves a form page?

I’ve been handed a new design for an edit view with a form, that
allows the user to move on to the next object in a list. This means
that there could be pending edits that need to be saved. The design
called for wants a prompt to see if the user wants to save or discard
pending changes (ala Gmail).

What’s a good rails-y way to do this?

I’ve been handed a new design for an edit view with a form, that
allows the user to move on to the next object in a list. This means
that there could be pending edits that need to be saved. The design
called for wants a prompt to see if the user wants to save or discard
pending changes (ala Gmail).

What’s a good rails-y way to do this?

Doubt Rails would get involved much as this has to happen client side
(the user could go anywhere or click on anything right?)

I’d write some Javascript to loop through all the fields in the form
and create another attribute “original-data” – using whatever the
recommended naming scheme is… maybe it’s data-original, I don’t
recall.

Set the current value to this attribute. Then add an onunload handler
that checks to see if any changes have been made and if so warn the
user.

-philip

hmmm… thx, Phillip…

I was thinking that there was a rails aspect in that there’d be
something tricky in catching the onunload event in JS and then if the
user wanted to save, posting back from there to my rails action to
handle the saving… no?

I guess I’m not seeing how I post to that action from JS… maybe I’m
overthinking it and it’s simpler than that… maybe I’m just tired :slight_smile:

that sounds nice and simple… thx Marnen

On Oct 24, 3:48 pm, Marnen Laibow-Koser <rails-mailing-l…@andreas-

lunaclaire wrote:

hmmm… thx, Phillip…

I was thinking that there was a rails aspect in that there’d be
something tricky in catching the onunload event in JS and then if the
user wanted to save, posting back from there to my rails action to
handle the saving… no?

I guess I’m not seeing how I post to that action from JS…

Have the JS call submit() on your form element. It’s still in the DOM
with all the data that the user entered.

maybe I’m
overthinking it and it’s simpler than that… maybe I’m just tired :slight_smile:

:slight_smile:

Best,

Marnen Laibow-Koser
http://www.marnen.org
[email protected]