Okay, but do  I leave everything else alone? All I want to do is make it 
www.mysite.com/equipment/id/title
currently, title is set up as slug in the DB. What am I doing wrong. 

 In my view:

    equipment_id = request.args(0)
    equipment_slug = request.args(1)
    query = (db.equipment.id == item_id) & (db.equipment.slug == item_slug)
    item = db(query).select().first()
    
    try:
        equipment = db.equipment[int(request.args(0))]
    except:
        equipment = db.equipment(request.args(0)) or db(db.equipment.slug 
== request.args(0)).select().first()


and then my link in sqlform:

    links = [lambda row: A('Details',_href=URL('default','equipment', 
args=[row.slug]))]


On Sunday, August 26, 2012 5:52:52 PM UTC-6, rochacbruno wrote:
>
>
> def show():
>     item_id = request.args(0)
>     item_slug = request.args(1)
>
>     query = (db.items.id == item_id) & (db.items.slug == item_slug)
>
>     item = db(query).select().first()
>     return dict(item=item)
>
> http://<myapp>/items/show/1/awesome-product
>
> http://<myapp>/items/show/2/awesome-product 
>
>
> On Sun, Aug 26, 2012 at 4:01 AM, SeamusSeamus 
> <[email protected]<javascript:>
> > wrote:
>
>> I would like to make it part of the URL....but am unsure how to do 
>> it...any tutorials or a quick way?
>>
>>
>> On Saturday, August 25, 2012 6:59:29 PM UTC-6, Anthony wrote:
>>>
>>> Oh, yeah, I guess you probably can't use the id in a compute because 
>>> there is no id until the record has been inserted. You could instead make 
>>> the id part of the URL (like Stack Overflow), or maybe make it a virtual 
>>> field, or generate your own unique id (separate from the record id).
>>>
>>> Anthony
>>>
>>> On Saturday, August 25, 2012 8:34:22 PM UTC-4, SeamusSeamus wrote:
>>>>
>>>> Thanks for the info Anthony...
>>>> When I do this:
>>>>     Field('slug', compute=lambda row: IS_SLUG()(row.title + "-" + str(
>>>> row.id))[0])
>>>>
>>>>  I get none as a slug...
>>>>
>>>>
>>>>
>>>> On Saturday, August 25, 2012 5:53:49 PM UTC-6, Anthony wrote:
>>>>>
>>>>> Sure, something like that seems fine. Look at what SO does -- for 
>>>>> example: http://stackoverflow.**com/questions/12050934/web2py-**
>>>>> build-forms-in-controller-or-**view<http://stackoverflow.com/questions/12050934/web2py-build-forms-in-controller-or-view>.
>>>>>  
>>>>> I think they use the number as the unique record identifier, but also 
>>>>> include a slug (which doesn't necessarily have to be unique).
>>>>>
>>>>> Anthony
>>>>>
>>>>> On Saturday, August 25, 2012 7:16:50 PM UTC-4, SeamusSeamus wrote:
>>>>>>
>>>>>> This runs into a problem where if I have two items of the same 
>>>>>> 'title', the user will only be linked to the first one that was created. 
>>>>>> Can I make it so the slug is a field that I designate? Or make it so the 
>>>>>> slug adds a incrementing number such as:
>>>>>>     Field('slug', compute=lambda row: IS_SLUG()(row.title *+ row.id*
>>>>>> )[0])
>>>>>>  I know thats not how you do it, but do you get what I mean? Is there 
>>>>>> a better way?
>>>>>>
>>>>>>
>>>>>> On Thursday, August 23, 2012 1:18:16 AM UTC-6, Anthony wrote:
>>>>>>>
>>>>>>>     links = [lambda ro
>>>>>>>> w: A('Details',_href=URL('**default','show', args=[row.slug]))]
>>>>>>>>     fields = [db.equipment.category, db.equipment.title, 
>>>>>>>> db.equipment.price]
>>>>>>>>
>>>>>>>
>>>>>>> You have not included "slug" in your list of fields, so I believe it 
>>>>>>> will not be included in the data query. Instead of specifying the list 
>>>>>>> of 
>>>>>>> fields, you can set the readable attribute to False for fields you 
>>>>>>> don't 
>>>>>>> want displayed (including "slug"). In that case, all fields will be 
>>>>>>> included in the query (including "slug"), but only the fields you want 
>>>>>>> to 
>>>>>>> show will be visible in the grid.
>>>>>>>
>>>>>>> Anthony 
>>>>>>>
>>>>>>  -- 
>>  
>>  
>>  
>>
>
>

-- 



Reply via email to