0

when I render an partial for my model I'm using:

<%= partial @my_model %>

Automatically it looks for the file ..view/my_models/_my_model.html.erb I really like this notation because it feels the right way!

My Problem: Now I want a notation to automatically look up for the edit partial. Is there a way? Until now I used

<%= partial 'edit' %>

This is ok, but I have a lot of subclasses for my model and I liked the way that it automatically looks up in the right subclasses view folder for the template. Until know I have to look for the class for my model and then call

<% if @my_model.class == FirstSubClass %>
    <%= partial 'firstsubclasses/_edit.html.erb' %>
<% elsif @my_model.class == SecondSubClass %>
    <%= partial 'secondsubclasses/_edit.html.erb' %>
<% end %>

I prefer one line :) Any ideas?

Simon Franzen
  • 2,628
  • 25
  • 34

1 Answers1

1

Try:

<%= partial '#{@my_model.class.name.tableize}/_edit.html.erb' %>

tableize is a method of ActiveSupport::Inflector, which includes some other cool naming manipulation methods.

Erez Rabih
  • 15,562
  • 3
  • 47
  • 64
  • Be aware that this will behave differently to the original code if the model object is any other subclass – Gareth Sep 08 '12 at 15:56