It won't always be desirable to preserve the original query string because 
the Ajax callback is not really requesting the original parent page but 
instead merely using the original action to access the autocomplete 
functionality. However, it would probably be a good idea to add an option 
to the autocomplete widget allowing the query string to be preserved, so 
you should submit a github issue about this (link back to this thread).

For now, though, there are three possible workarounds:

   1. Because the URL args are preserved, you can put the step in a URL arg 
   instead of a "step" variable in the query string.
   2. You can store the step in the session rather than in the URL (not 
   good for bookmarking).
   3. You can manipulate the widget after it has been instantiated (haven't 
   tried it, but I think it should work):

        city_widget = SQLFORM.widgets.autocomplete(request, db.city.name, 
id_field=db.city.id)
        city_widget.url = URL(args=request.args, vars=request.get_vars)
        db.person.city.widget = city_widget

Also, note that there is an error in your code -- you are assigning the 
widget to db.person.city rather than to db.person.city.widget.

Anthony

On Saturday, September 19, 2015 at 11:05:52 AM UTC-4, Yoel Benitez Fonseca 
wrote:
>
> hi! i have been struggling with a annoying bug, i got a this in a 
> controller: 
>
> --- 
> def some_function(): 
>     if not request.vars.step: 
>         redirect(URL('some_function', vars=dict(step=1))) 
>     # ---- 
>     # a lot of stuff in the middle 
>     # ---- 
>     if request.vars.step = '3': 
>         db.person.city = SQLFORM.widgets.autocomplete(request, 
>             db.city.name, id_field=db.city.id) 
>         form = SQLFORM.factory(db.person): 
>         if form.process().accepted: 
>             # do some stuff 
>             pass 
>     # more stuff... 
> --- 
>
> The problem is that the autocomplete callback overwrite anything in 
> request.vars and only left his own parameter _autocomplete_city_name, 
> is this the intended behavior ? i mean for me it have more sense that 
> the autocomplete callback add what it need and leave the others things 
> in place. 
>
> -- 
> Msc. Yoel Benítez Fonseca 
> Especialista en TI 
> http://redevil.cubava.cu/ 
> Tel.: (53 32)284701 
>

-- 
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.

Reply via email to