In my 'room' controller, I did this:
def list():
    rooms =
db((db.rooms.customer==session.customer_id)&(db.rooms.property==db.properties.id)).select(db.rooms.ALL,
db.properties.ALL, orderby=db.properties.short_desc)
    return dict(rooms=rooms)

which I thought was way cool.

In my 'room/list.html' view, I'm able to do this:

{{for room in rooms:}}
    <p>
        <a href="{{=URL(f='show',
args=room.rooms.id)}}">{{=room.properties.short_desc}}:
{{=room.rooms.short_desc}}</a>
        <a href="{{=URL(f='update', args=room.rooms.id)}}">[edit]</a></
p>
{{pass}}

Which I also thought was way cool.

Then I tried to pass it to generic.json. I called rooms/list.json, and
got got 'no json'.  After commenting out the try/catch block, I found
this:
Traceback (most recent call last):
  File "/var/www/vhosts/web2py.hens-teeth.net/httpdocs/web2py/gluon/
restricted.py", line 188, in restricted
    exec ccode in environment
  File "/var/www/vhosts/web2py.hens-teeth.net/httpdocs/web2py/
applications/InsuranceInventory/views/generic.json", line 5, in
<module>
    #try:
AttributeError: 'dict' object has no attribute 'id'

Dumping the row object out, I discover that this is accurate. There is
no attribute 'id'.  All the attribute names are based on the two
tables. For instance, 'rooms.id', 'property.id', etc.

I made my own list.json file, and attempted to work with the returned
rows object, but I got stuck since I don't know how to access an
attribute of an object, when the attribute has a dot in it.

Anybody been here? How do I work with this object. I need the json
output in order to populate a rooms dropdown using jQuery.

Thanks.

Reply via email to