The problem is that URL, when an extension is not specified, inherits it from the current URL which is .load in the case where they are loaded in components with extension='load'.
The thing is, this need to be load, otherwise inner will use the generic HTML view extending layout.html and you don't want to have a layout inside your layout when you're not opening in a new window. So basically inner needs to detect whether it's really a component or not, generally that's what the extension is for. The only way I can remember to do this would be with stupid javascript hacks. For instance, you could make an inner.load view like this: {{=grid}} <script> $('.web2py_grid a').each(function() { if (typeof $(this).attr('href') !== 'undefined') { $(this).attr('href', $(this).attr('href').replace('.load', '.html' )); $(this).click(function(e) { if (e.which == 1) { // If we're left clicking if(e.ctrlKey) { // ctrl key being pressed also means new tab window.open($(this).attr('href')); } else { // We really want to stay in the component $(this).attr('href', $(this).attr('href').replace( '.html', '.load')); } } }); } }); </script> What this does is make all links have a .html extension, then if the user is left clicking it makes it .load again. Yep, it's ugly, but you asked for it. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.