Dynamic paths

does anyone know how i can make dynamic paths?

say i had a partial for maybe an index list, but i want the link to
the show page to be dynamic so im able to use the partial for may
objects.

<%= link_to “show”, “#{object}” + _path(object) %>

something along those lines.

Bob O wrote:

does anyone know how i can make dynamic paths?

say i had a partial for maybe an index list, but i want the link to
the show page to be dynamic so im able to use the partial for may
objects.

<%= link_to “show”, “#{object}” + _path(object) %>

something along those lines.

<%= link_to “show”, :controller => controller.controller_name %>

This will automatically define the path to the current controller when
it’s called from a view within that controller…

For instance say you have an products controller with a products view…

Using the line above will give you:

<%= link_to “show”, products_path %>

excellent. thank you.

i further step.

I have a polymorphic association where im trying to achieve something
similar.

im feeding an xml file to a swf.

the xml iterates over the poly model, but it belongs_to many different
objects.

but the xml file is called from the poly controller. so the above wont
work correctly, right?

if this doesnt make sense i can post some code

On Jul 10, 4:23 pm, “Älphä Blüë” [email protected]

On Jul 10, 11:17 pm, Bob O [email protected] wrote:

does anyone know how i can make dynamic paths?

say i had a partial for maybe an index list, but i want the link to
the show page to be dynamic so im able to use the partial for may
objects.

<%= link_to “show”, “#{object}” + _path(object) %>

something along those lines.

Are you looking for polymorphic_path ?

Fred

Hi Bob,

It depends on how you have your controllers setup - really. For
instance, I have a Universal controller template that 37 other
controllers use.

class UniversalTemplatesController < ApplicationController
def index
@objects =
params[:controller].singularize.camelize.constantize.find(params[…])

respond_to do |format|
  format.html
  format.xml  { render :xml => @objects }
end

end
end

class NextController < UniversalTemplatesController

Inherits from the universal_templates_controller

no other code in here

end

class YetAnotherController < UniversalTemplatesController

Inherits from the universal_templates_controller

no other code in here

end

etc…

When these other controllers call what I showed you from within their
specific views, it works fine because they are all part of the
UniversalTemplatesController.

I’m not sure if this is what you were asking but it’s another way of
doing things especially if you are reusing a lot of the same code within
other controllers.

Let me see if i can be more clear, and i will try some of the
suggested solutions

Im trying to make the route paths dynamic.

Lets say I have 2 models document, and article

I would have paths like
document_path(document), documents_path, new_document_path etc…
and similar for article
article_path(article), articles_path, new_article_path etc…

In the past few apps I have been developing I have come across
situations where I have had blocks of code (that could be a helper or
partial) that are pretty much the same for various models. or im this
particular case, an xml file that needs to be used by various models.

So in these cases I want to be able to create 1 partial or helper or
even an xml.builder that could allow the passing of any model object.

Database attributes work as they should
document.title or article.title could be passed in like so <%=
my_partial(object) %> with

Def my_partial(object)
object.title
End

The problem comes with the restful paths

document_path(document) or article_path(article)

Where I want to generate

#{object}path(object) or #{object)s_path or new#{object}_path
etc…

This way i can create 1 block of code to be used by many objects

Does that make more sense?

If your routes are set up in the default RESTful style, then you
should just be able to call:

<%= link_to ‘show’, object %>

…and the routing system will get what you mean. If things are more
complicated, you may need of the other solutions here. Or, you could
call a named route like this:

<%= link_to ‘show’, send("#{some expression that gives you the name}
_path", object) %>

but the previous example seems much cleaner.

–Matt J.

After diving into a few mentioned scenarios (thanks Frederick) the
polymorphic_path and polymorphic_url is what i was looking for.

thanks guys

B