Re: polymorphic_urls and REST routes

Mislav Marohnić
2008-01-20T13:10:42Z

I believe this is by design.

When you say link_to(text, record), a polymorphic url is constructed
depending on the model. But when you say edit_person_path, you are
explicitly stating that you are dealing with Person records and that no
polymorphism should take place.

I understand that when using STI you have a need for a polymorphic helper,
but I don''t think changing the behavior of named routes (explicit or
automatically generated) is a solution - it would just be the source of more
confusion for others.

Your cup of tea would be the edit_polymorphic_path helper, as in this
example I just put up:
http://pastie.org/141162

- Mislav

On Jan 20, 2008 1:32 PM, adish <adishavit@gmail.com> wrote:

>
> Hi,
>
>  With a simple STI Employee < Person, I can write in the Person
> view.rhtml.erb :
>
> ...
> link_to ''Show'', person
> ...
>
> and the correct controller will be call depending on the actual
> (concrete) type of the record.
> I think this is because link_to() uses polymorphic_url() internally.
>
> However, the restful helpers, such as edit_person_path() fail to
> choose the correct controller and always route to the Person
> controller. This seems inconsistent and confusing.
>
> How can I reroute edit_person_path() to take the polymorphic type into
> account, and route to the correct controller?
>
> Is this by design or a bug?
>
> I hope I made myself clear.
> Thanks,
> Adi
>
> >