Thanks Fred, here's what I got...

My application.js file looks like this (below is the drag and drop
code)...

        jQuery(document).ready(function(){
                jQuery(".block").draggable({
                helper: 'clone',
                revert: true});
        jQuery(".drop").droppable({
                accept: ".block",
                tolerance: "pointer",
                activeClass: 'droppable-active',
                hoverClass: 'droppable-hover',
                drop: function(ev, ui) {
                        var entryID = 
jQuery(ui.draggable).attr("id").replace('entry_','');
                        var dropCategoryID =
jQuery(this).attr("id").replace('category_','');
                        var origCategoryID = jQuery('#current_category_' +
entryID).attr("class");
                        var categoryColor = 
jQuery(this).attr("style").replace('background:
','');
                        var dropCatCount = jQuery('#category_' + dropCategoryID 
+ '
span:first').html()
                        var origCatCount = jQuery('#category_' + origCategoryID 
+ '
span:first').html()
                        if (dropCategoryID != origCategoryID) {
                                if (origCategoryID == 'none') {
                                        dropCatCount++
                                        jQuery('#category_' + dropCategoryID + '
span:first').html(dropCatCount)
                                }
                                else {
                                        dropCatCount++
                                        origCatCount--
                                        jQuery('#category_' + dropCategoryID + '
span:first').html(dropCatCount)
                                        jQuery('#category_' + origCategoryID + '
span:first').html(origCatCount)
                                        jQuery('#current_category_' +
entryID).removeClass(origCategoryID).addClass(dropCategoryID)
                                        /* you need to update the 
origCategoryID */
                                }
                        }
                        /* this deals with FireFox */
                        var testHex = /[\#]/.test(categoryColor)
                        if (testHex == false) {
                                categoryColor = RGBToHex(categoryColor);
                        }
                        jQuery('#entry_cat_' + entryID).css("background-color",
categoryColor);
                        jQuery.ajaxSetup({
                          data: { authenticity_token : AUTH_TOKEN }
                        })
                        jQuery.ajax({
                          type: "POST",
                          url: ("entries/entry_categorize?entry=" + entryID + 
"&category="
+ dropCategoryID),
                          dataType: "script"
                        })
                }
                });
        });

In my view, my form_remote_tag code looks like this...

        <% form_remote_tag(:url => {:id => current_user.id},
                                                                :html => {:name 
=> 'new_entry_form'},
                                                                :update => 
'user_entries',
                                                                :complete => 
"reset('new_entry_form')"
                                                                ) do %>

I tried wrapping the drag and drop code that i pasted above which
lives in application.js inside a function named initiateDragDrop, but
as I said, my javascript isn't strong, so I'm not sure that I did it
correctly.  I then added ":success => "initiateDragDrop()" to my
form_remote_tag expecting that the drag and drop would work after I
posted the form, but it didn't.

What am i doing wrong?

Thanks,
-A

On Oct 10, 12:25 pm, Frederick Cheung <[EMAIL PROTECTED]>
wrote:
> On Oct 10, 4:34 pm, ressister <[EMAIL PROTECTED]> wrote:
>
> > Good point.  Right now, the jQuery drag and drop javascript code is
> > not inside a function in application.js.  I'm not all that experienced
> > with Javascript.  Would i need to wrap the drag and drop code inside a
> > function that's called when the partial is displayed to re-initialize
> > the event handlers etc?  
>
> Something like that. Exactly what goes where is likely to depend on
> what your drag and drop code looks like.> Can you give me an example of how 
> to do
> > that?  I'm happy to post my drag-and-drop javascript code if that will
> > help.
>
> form_remote_tag etc... take a bunch of options, in particular :success
> is a javascript fragment that is evaluated when the ajax call has
> succeeded. In this case it should probably do whatever initialization
> you need to make things work
>
> Fred
>
> > Thanks Fred,
> > -A
>
> > On Oct 10, 11:19 am, Frederick Cheung <[EMAIL PROTECTED]>
> > wrote:
>
> > > On Oct 10, 4:12 pm, ressister <[EMAIL PROTECTED]> wrote:
>
> > > > Hi there,
>
> > > > I have one last remaining problem to solve before I'm code complete on
> > > > an application I've been working on for a few months, and I need your
> > > > help.
>
> > > > I have a page that contains a list of entries and a form at the top
> > > > that uses form_remote_tag to allow users to add new entries via AJAX.
> > > > When the user submits the form, the list of entries is updated from
> > > > the controller using render :update and the same partial that was used
> > > > to initially render the page.  The entries in the list are draggable,
> > > > at least they are BEFORE the entry list is updated as a result of AJAX
> > > > call.
>
> > > > After the AJAX call is complete, the list entries are no longer
> > > > draggable.  I am using jQuery and Prototype, jQuery for the drag and
> > > > drop.  The javascript drag and drop code is in my application.js
> > > > file.  If i move the javascript in-line into the partial that
> > > > generates the list of entries, after a form submit, the entries are
> > > > still draggable, but that has its own set of problems and i don't want
> > > > to do that.
>
> > > > Why would the drag and drop no longer work after the AJAX call when
> > > > I'm using the same partial that was used to render the page when all
> > > > the drag and drop javascript is in the application.js?
>
> > > Presumably when you load the page the first time round, some sort of
> > > initialisation occurs that marks the elements as draggable (ie
> > > installs various event handlers and what not).
> > > When you replace the list, you would need to do that initialisation on
> > > the new dom elements.
>
> > > Fred
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to