Различные представления для подклассов - PullRequest
1 голос
/ 01 января 2012

Я использую подклассы STI и хочу перейти к различным представлениям для разных подклассов. В данный момент я направляю тему подкласса к статье основного класса следующим образом:

 resources :topics, :controller => 'articles'

Существует ли простой способ перехода к различным представлениям?


Редактировать

Лучший способ, который я нашел, это:

  <% case%>
    <% when @article.type == 'Topic' %>
      <%= render 'topic' %>
    <% else %>
      <%= render 'article' %>
  <% end %>

1 Ответ

2 голосов
/ 01 января 2012

Если вы достаточно умно назвали свои взгляды, вы можете просто сделать

render @article.type

или

render :partial => @article.type

В противном случае вы можете определить метод во всех ваших подклассах STI, который возвращает имя части / страницы, которая будет отображаться, таким образом вы избежите всей логики if / else в вашем контроллере.

Другим подходом было бы иметь отдельные контроллеры для разных подклассов, но это не очень хороший дизайн. Если бы вы пошли по такому пути, то, возможно, ИППП был не лучшим подходом.

...