search_results() will have to be exposed since I want to display the results on a different page (in search_results.html). I think returning the div using your suggestion would still be on the same page?
On Thursday, May 23, 2013 3:38:17 PM UTC-4, Anthony wrote: > > Why do you need to redirect at all? You can just call the search_results() > function directly from the myButton() function: > > def search_results(resultSet): > div = DIV(.....) > return dict(div=div) > > def myButton(): > someId = request.args(0) > resultSet = db(....) > return search_results(resultSet) > > If the search_results() function is needed in other controllers, you could > define it in a model file or in a module and import it. Note, functions > that take arguments (as search_results does above) are not exposed as > actions accessible via URL -- they are for internal use only (same for a > function that begins with a double underscore, even if it doesn't take any > arguments). > > Anthony > > On Thursday, May 23, 2013 2:51:24 PM UTC-4, brac...@gmail.com wrote: >> >> In my views, I have: >> >> {{=A('click for more information', _href=URL("myCallback", args=[1]))}} >> >> >> When the anchor button is clicked, my callback will do some lookup and >> processing in the db, and then will redirect to a new page populated with >> the new information: >> >> def search_results(): >> resultSet = request.args(0) >> # Build HTML helpers using resultSet >> div = DIV(.....) >> >> return dict(div=div) >> >> def myButton(): >> # Figure out the id from the request >> someId = request.args(0) >> >> # get some data from db using the id >> resultSet = db(....) >> >> >> # want to redirect to another page with the new data in the >> resultSet >> redirect(URL('search_results', args=resultSet)) >> >> But doing the redirect with the resultSet args will screw up the URL and >> I'll end up with an invalid request. >> >> I've thought of two ways around this: >> >> 1) Create a temporary session variable and store the resultSet there. >> Once I'm done with the data, I'll explicitly clear it. >> >> 2) Instead of doing the database logic in the callback, pass the id to >> the search_results() and do the database logic there. >> >> I'm hesitant to adopt the first option because it seems messy to create a >> bunch of session variables for temporary things (unless this is standard >> practice?). >> >> The second option seems okay, but I'm afraid that the code will become >> too specific to that particular anchor tag. That is, if I create a new >> anchor tag to do some other search, the database logic may be different >> than the one inside the search_results(). For this, I guess the better >> question should be if the database logic code should live in the callback >> function or in the target redirect controller function? >> >> >> In spite of this, what would be the clean or proper way of sending data >> with a redirect from a callback function? >> > -- --- 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/groups/opt_out.