I’m trying to apply an Effect.Highlight only to elements of a Form that
was
submitted.
So if a user updated 2 fields of a 10 field form, the Effect.Highlight
would
be applied to the 2 fields… showing the user what was updated.
My first attempt was to use the :complete=>“eval(request.responseText)”
…
however, the template that get’s rendered won’t know what elements to
apply
the Effect too.
My second attempt was to use a Javascript call, like the following…
but
don’t know the correct syntax to use to pull the elements modified from
the
Form:
<% content_for(“page_scripts”) do -%>
function field_edited() {
var field = $(‘field’); // how do i figure out what was
edited from the Form params ?
new Effect.Highlight(field);
}
Any insight into this would be great, as I’ve been stumbling over this
for
quite some time now.
Thanks !
Dylan
I think this is a doubly loaded question. Not clear how/when you’ll show
the highlighted elements. But here is my take on it.
-
Try to deal with the form diff in the ajax call. You know what the
form was and now what the form is. So you can diff out the user changes
and return the form attributes that have changed.
-
Use an rjs template on the way back and highlight the updated fields
based on you diff.
Hope this helps…
From a controller action, after a form submit, is there a way to pass some
data to the template (or RJS template if you’re using them) that is
going to
be rendered ?
For example, passing the template some information as to what elements
to
effect.
Dylan,
Take a look at the rjs plugin. You don't need to run to the edge...
You can find all the info you need here:
http://www.codyfauser.com/articles/2005/12/02/rails-rjs-templates-plugin
Good luck !!
If anybody was interested, I found this post which pretty much solves my
problem. Not sure if this is the best approach… but it works !
http://www.cube6media.com/weblog/entry/2005/11/24/rails-ajax-form-error-handling