I have a credentials_controller and Credential model. The Credential
model is an STI structure with a number of classes inheriting it. For
example:
class CredWebsite1 < Credential
When I try to do the index command in the credentials controller, it
gives the error undefined method
NoMethodError in Credentials#index
Showing credentials/index.html.erb where line #17 raised:
undefined method `cred_website1_path’ for #<ActionView::Base:
0xb6f74494>
Extracted source (around line #17):
17: <%= link_to ‘Show’, credential %> |
I want all of the inherited models to use the path for
credentials_controller. How do I set that up?
Thanks,
Jonathan
becomes(klass)
Returns an instance of the specified klass with the attributes of the
current record. This is mostly useful in relation to single-table
inheritance structures where you want a subclass to appear as the
superclass. This can be used along with record identification in
Action Pack to allow, say, Client < Company to do something like
render :partial => @client.becomes(Company) to render that instance
using the companies/company partial instead of clients/client.
Note: The new instance will share a link to the same attributes as the
original class. So any change to the attributes in either instance
will affect the other.
In your case: link_to ‘Show’, credential.becomes(Credential)
You may also decide to have your controller specify the class instead,
there is probably a clean way but I don’t know it off the top of my
head.
Thanks! That is exactly what I was looking for. Works like a charm.
Jonathan