I think by default, functions with arguments are not exposed.  From: 
http://stackoverflow.com/questions/3003449/web2py-controllers-with-parameters

"web2py specifically detects valid controller functions as those functions 
that have no arguments"

On Thursday, November 14, 2013 9:03:34 PM UTC-5, 黄祥 wrote:

> hi,
>
> i have a function that must be passed with parameter, if i test to call it 
> from controllers it works well. 
> e.g. in controller
> def outstanding_rent():
> query = db.rent_detail.status == 'Rent'
> grid = SQLFORM.grid(query, selectable = lambda ids: revert(ids) )
> return locals()
>
> def revert(ids):
> for id in ids:
> detail = db(db.rent_detail.id == id).select().first()
> db.revert_detail.insert(rent_no = detail.rent_no, 
> due_date = detail.due_date, 
> customer = detail.customer, 
> dvd = detail.dvd, 
> quantity = detail.quantity)
> redirect(URL('report', 'report_revert') )
>
> when i try to move it to views it not work. 
> e.g.
> *controllers/default.py*
> def outstanding_rent():
> query = db.rent_detail.status == 'Rent'
> #grid = SQLFORM.grid(query, selectable = lambda ids: revert(ids) )
> grid = SQLFORM.grid(query, selectable = lambda ids : 
> redirect(URL('revert_checkout', vars = dict(ids = ids) ) ) )
> return locals()
>
> def revert_checkout():
> ids = request.vars.ids
> return dict(ids = ids)
>
>
> def revert(ids):
> for id in ids:
> detail = db(db.rent_detail.id == id).select().first()
> db.revert_detail.insert(rent_no = detail.rent_no, 
> due_date = detail.due_date, 
> customer = detail.customer, 
> dvd = detail.dvd, 
> quantity = detail.quantity)
> redirect(URL('report', 'report_revert') )
>
> *views/default/revert_checkout.html*
> <table class="table table-condensed table-hover">
>     <tr>
>         <th>{{=T('DVD')}}</th>
>         <th>{{=T('Quantity')}}</th>
>     </tr>
> {{for id in ids:}}
> {{detail = db(db.rent_detail.id == id).select().first()}}
>     <tr>
>         <td>{{=SPAN(detail.dvd.title)}}</td>
>         <td>{{=SPAN(detail.quantity)}}</td>
>     </tr>
> {{pass}}
> </table>
>
> #test with args
> {{=SPAN(A(T('Process 1'), _href=URL('revert', args = ids) ) ) }}
> #test with vars
> {{=SPAN(A(T('Process 2'), _href=URL('revert', vars = dict(ids = ids) ) ) ) 
> }}
> #test call like on controler
> {{=SPAN(A(T('Process 3'), _href=URL('revert(ids)' ) ) ) }}
>
> is it possible to call function with parameter from views?
>
> thanks and best regards,
> stifan
>

-- 
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/groups/opt_out.

Reply via email to