Search code examples
ruby-on-railsrubyruby-on-rails-3ruby-on-rails-3.1renderpartial

Ruby on Rails - Render form for model


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?


Solution

  • 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.