Ruby on Rails — визуализация формы для модели

когда я визуализирую частичное для своей модели, я использую:

<%= partial @my_model %>

Автоматически он ищет файл ..view/my_models/_my_model.html.erb Мне очень нравится это обозначение, потому что оно кажется правильным!

Моя проблема: теперь я хочу, чтобы нотация автоматически искала частичное редактирование. Есть ли способ? До сих пор я использовал

<%= partial 'edit' %>

Это нормально, но у меня есть много подклассов для моей модели, и мне понравилось, как он автоматически ищет в нужной папке представления подклассов для шаблона. Пока не знаю, мне нужно найти класс для моей модели, а затем позвонить

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

Я предпочитаю одну строку :) Есть идеи?


person Simon Franzen    schedule 08.09.2012    source источник


Ответы (1)


Пытаться:

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

tableize — это метод ActiveSupport::Inflector, который включает в себя некоторые другие интересные манипуляции с именами. методы.

person Erez Rabih    schedule 08.09.2012
comment
Имейте в виду, что это будет вести себя иначе, чем исходный код, если объект модели является любым другим подклассом. - person Gareth; 08.09.2012