Использование STI-пути с тем же контроллером - PullRequest
2 голосов
/ 16 марта 2010

Я использую STI и мне интересно, должен ли я иметь отдельный контроллер для каждой модели? У меня есть ситуация, когда я использую действия создания и редактирования только для одной модели в отношении STI, но я получаю ошибку «неопределенный метод», если пытаюсь создать форму для. Более конкретно, у меня есть две модели, которые наследуются от List:

class RegularList < List
class OtherList < List

и у меня есть контроллер списков, который обрабатывает эти действия, но я создаю только новые модели с RegularList, используя формы. единственная ситуация, когда я использую form_for для создания нового объекта List, это RegularList. Я хотел бы сделать что-то вроде:

class ListsController < ApplicationController

def new
  @list = RegularList.new
end

в противном случае маршрут для создания нового списка выглядит как обычный_список / новый, но я бы хотел, чтобы он был просто списком / новым. Мысли?

РЕДАКТИРОВАТЬ: Проблема в том, что когда я использую приведенный выше код, я получаю ошибку «неопределенный метод». Мой взгляд выглядит так:

...

Так что кажется, что есть некоторая проблема с использованием объекта RegularList в контроллере Lists, и это основная проблема, которую я пытаюсь решить. Извините, я понимаю, что это не было самым ясным объяснением.

Ответы [ 2 ]

11 голосов
/ 18 января 2011

Я знаю, что это немного поздно, но, возможно, это будет полезно для других людей. Вы хотите использовать метод becomes. Допустим, вы редактируете @list, который является экземпляром RegularList. Тогда сделай

form_for @list.becomes(List)
0 голосов
/ 16 марта 2010

Я использую STI и мне интересно, должен ли я иметь отдельный контроллер для каждой модели?

Нет, нет.

...