:url being ignored or routing problem?

background i have a page with a drop-down menu item. if any of the choices is selected, a partial gets activated to appear with new drop-down menu choices. the initial page uses a select_tag, observe_field, and a div to implement the above desired functionality. the pages i am working with comprise a sub/child area within an "admin" area. this all used to work, but for some reason stopped work at some unknown time.

troubleshooting i'm looking at the log, and it seems to me that when i am at the initial page (and surrounding pages), i am in the desired controller. routing appears to be working as expected. however, when i test my drop-down menu, it appears as though 1) the :url => {:controller => .. details are being ignored; and 2) the parent "admin" controller only is getting processed rather than the supposed current "admin/assets" controller. it is as if the default, last route, " map.connect ':controller/:action/:id' " is being consulted rather than the :url in observe_field or anything else higher pertaining to admin and assets in routes. "assets" gets parsed as/demoted to an action rather than as part of the controller.

<%= select_tag(:type, options_for_select(['[select one]','page','program','event']), :id => 'type_selection') %>

<%= observe_field('type_selection',   :frequency => 0.5,   :update => 'page_selection',   :url => {:controller => "admin/assets", :action => :set_pages},   :with => "'type='+$('type_selection').value") %>

<div id="page_selection"> </div>

set_pages is defined as a method in the admin/assets controller.

questions what (routing) is taking precedence? where is observe_field getting its instructions from instead, why does it seem as if its :url argument is being ignored?

i've performed the usual basic tasks, such as restarting the application, etc. but obviously i'm missing something.. probably something very basic :confused: please advise.

What is in the rendered html?

Fred

if i understand your question properly, i get a page with a partial, where the partial area displays a 404 error ("The page you were looking for doesn't exist. You may have mistyped the address or the page may have moved.") i expect (but don't want!) this, since routing is parsing my intentions all wrong, as described earlier.

if i understand your question properly, i get a page with a partial, where the partial area displays a 404 error ("The page you were looking for doesn't exist. You may have mistyped the address or the page may have moved.") i expect (but don't want!) this, since routing is parsing my intentions all wrong, as described earlier.

Please don't top post, it is easier to follow the thread if you insert your reply at the appropriate point. I think Fred wants to see the html of the page, you can see this using View, Page Source (or similar) in the browser.

You can check that the html is valid (a good thing to check first when strange things happen) by copying the complete html from the View Source window and pasting it into the w3c html validator web site.

Colin

Colin

if i understand your question properly, i get a page with a partial, where the partial area displays a 404 error ("The page you were looking for doesn't exist. You may have mistyped the address or the page may have moved.") i expect (but don't want!) this, since routing is parsing my intentions all wrong, as described earlier.

That's not what I meant. What I meant is what html does observe_field produce

Fred

> troubleshooting > i'm looking at the log, and it seems to me that when i am at the > initial page (and surrounding pages), i am in the desired controller. > routing appears to be working as expected. however, when i test my > drop-down menu, it appears as though 1) the :url => {:controller => .. > details are being ignored; and 2) the parent "admin" controller only > is getting processed rather than the supposed current "admin/assets" > controller. it is as if the default, last route, " map.connect > ':controller/:action/:id' " is being consulted rather than the :url in > observe_field or anything else higher pertaining to admin and assets > in routes. "assets" gets parsed as/demoted to an action rather than > as part of the controller.

> <%= select_tag(:type, options_for_select(['[select > one]','page','program','event']), :id => 'type_selection') %>

> <%= observe_field('type_selection', > :frequency => 0.5, > :update => 'page_selection', > :url => {:controller => "admin/assets", :action => :set_pages}, > :with => "'type='+$('type_selection').value") %>

> <div id="page_selection"> > </div>

What is in the rendered html?

<script type="text/javascript"> //<![CDATA[ new Form.Element.Observer('type_selection', 0.5, function(element, value) {new Ajax.Updater('page_selection', '/admin/assets/set_pages', {asynchronous:true, evalScripts:true, parameters:'type='+$ ('type_selection').value + '&authenticity_token=' + encodeURIComponent('13b2be353ea3c336c4f8763a4dd2128383ec4d5f')})}) //]]> </script>

so that much seems ok - your url option isn't getting ignored since the javascript is trying to post to /admin/assets/set_pages (which from your description sounds correct)

which controller is picking this up (and which one should be picking it up) ?

Fred