I think the issue would more be the routing with the rest of the app - 
'/:type/:id' would match  a good number of paths you wouldn't actually want it 
to.

I think Andy's got it spot on before - you do indeed use that route, but it 
becomes your catch-all, at the end of your routes file.

There's still issues with being able to generate the paths neatly, but a helper 
method or two should take care of that. The following may even work:

  def link_to(*args, &block)
    if args[1] && args[1].is_a?(Product)
      # build your product path here
    else
      super
    end
  end

Could definitely be cleaner, but that's what I'd start with.

-- 
Pat

On 29/11/2010, at 1:51 PM, Ben Hoskings wrote:

> How about just:
> 
>     match '/:type/:id' => 'products#show'
> 
> And then in ProductsController#show, use params[:id] and params[:type] ?
> 
> Ben
> 
> On 29 November 2010 09:44, Mark Ratjens <[email protected]> wrote:
> The requirement is to have urls of the form
> 
> /cars/23
> 
> not
> 
> /products/cars-23
> 
> This will, of course, be my fall-back position if I can't get exactly what is 
> wanted.
> 
> Also, I'm already using friendly_id ... my id's aren't actually numeric, but 
> it doesn't change the problem. I've read though the friendly_id doco ... it 
> doesn't seem to help with adapting the url beyond id's and nested id's. I 
> have read at least one post where Norman Clark has answered saying that 
> friendly_id is not  aimed at solving routing issues.
> 
> 
> On Mon, Nov 29, 2010 at 9:35 AM, Andy Shen <[email protected]> wrote:
> You could consider mapping the following route to products controller
> 
> /products/:type/:id
> 
> or have a look into friendly_id, which is along the same concept of
> to_params, maybe use id like car-23, truck-37, boat-126
> 
> On 28 November 2010 23:52, Mark Ratjens <[email protected]> wrote:
> > Suppose I have an ActiveRecord called Product. I can have different kinds of
> > products, say "cars", "trucks" and "boats." Because of the nature of the
> > app, there is no need to subclass product (i.e, the data and behaviour is
> > the same) ...
> >
> > ... but for SEO reasons I want to be able to generate links in the app that
> > include the kind of product, not just "product", for example:
> >
> > /cars/23
> > /trucks/37
> > /boats/126
> >
> > not:
> >
> > products/23 etc
> >
> > The thing I am tousling with is generating the appropriate link in the app.
> > Is there some way I can adapt:
> >
> > link_to @product.name, @product
> >
> > to automagically generate a link with the right product kind ... or do I
> > need to do it long-hand, i.e:
> >
> > link_to @product.name, :controller => @product.kind, :action => :show, :id
> > => :product
> >
> > ?
> >
> > Thanks in advance
> >
> > Mark
> >
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Ruby or Rails Oceania" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group at
> > http://groups.google.com/group/rails-oceania?hl=en.
> >
> 
> --
> You received this message because you are subscribed to the Google Groups 
> "Ruby or Rails Oceania" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/rails-oceania?hl=en.
> 
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby or Rails Oceania" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/rails-oceania?hl=en.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby or Rails Oceania" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/rails-oceania?hl=en.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
or Rails Oceania" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rails-oceania?hl=en.

Reply via email to