Forum: Ruby on Rails query broke when I changed my routing I think

Posted by Craig White (Guest)
on 2012-12-04 17:51
(Received via mailing list)
Ran into a curious situation that I don't know how to resolve.
ActiveLDAP gem updated which took me from Rails 3.1.1 to 3.2.8.

ActiveLDAP has ID's with '.' in them so I had to change my routes to 
accommodate.
<snip from config/routes.rb>
  match '/:controller(/:id(/:action))', :constraints => { :id => 
/[^\/]+/ }
</snip>
This caused a problem with my ajax because apparently the ajax sends the 
data in the form of /:controller/:action/:id so I added
<another snip from config/routes.rb>
  match '/permissions/add_member' => 'permissions#add_member'
  match '/permissions/remove_member' => 'permissions#remove_member'
</another snip>

Which is fine to the controller but now (the database changes indeed 
occur), the route back doesn't update the screen properly though 
according to firebug, the HTML is getting returned the same as always.

The error in the console shows me:
.  Uncaught TypeError: Object #<Text> has no method 'getAttribute' 
application.js:15
  .  G.selectors.filter.ID.napplication.js:15

  .  uapplication.js:15

  .  htapplication.js:15

  .  u.querySelectorAll.htapplication.js:15

  .  Gapplication.js:15

  .  u.querySelectorAll.G.matchesSelectorapplication.js:15

  .  v.fn.extend.closestapplication.js:15

  .  (anonymous function)drag_drop.js:201

  .  v.Callbacks.lapplication.js:14

  .  v.Callbacks.c.fireWithapplication.js:14

  .  Tapplication.js:16

  .  v.support.ajax.v.ajaxTransport.send.rapplication.js:16


and the unchanged drag_drop.js which used to work fine is
<snip drag_drop.js>
$(function() {
    $("[id^=role-]").on("mouseenter", function() {
        !$("li:first", this).hasClass("ui-draggable") && $("li", 
this).draggable({ containment: '#priv_drop' });
    });
    $("#priv_drop").droppable({
        drop: function(event, ui) {
            var droppriv = "#role-" + ui.draggable.attr("data-role");
            $(this).addClass("ui-state-highlight");
            $.post("/permissions/remove_member/", {
                "id": ui.draggable.attr("data-del")
            }, function(data) {
                var html = $(data);
                $("#priv_users").empty().append(html.closest("#priv_users").children());
                $(droppriv).empty().append(html.closest(droppriv).children());
                $("#messages1").replaceWith(html.closest("#messages1"));
            });
        }
    });

and the error is highlighting the line 
$("#priv_users").empty().append(html.closest("#priv_users").children());

the controller & the view (actually, the partial here) are unchanged 
from previously working.

I've been struggling with this for many hours and haven't been able to 
solve.

I do have a jsfiddle on this… http://jsfiddle.net/white_n_az/egHfd/6/

Can anyone toss me a bone here?

--
Craig White ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
craig.white@ttiltd.com
1.800.869.6908 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
www.ttiassessments.com

Register Now!
TTI Winners' Conference 2013
January 20th - 22nd
The Earlier You Register the More FREE Product You Receive
Click here for more information!
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.