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
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) %>