Simon Franzen
Simon Franzen

Reputation: 2727

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?

Upvotes: 0

Views: 807

Answers (1)

Erez Rabih
Erez Rabih

Reputation: 15788

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.

Upvotes: 1

Related Questions