3

我正在使用 STI 并且想知道,我是否必须为每个型号配备一个单独的控制器?我有一种情况,我只对 STI 关系中的一个模型使用创建和编辑操作,但如果我尝试为其创建表单,则会收到“未定义方法”错误。更具体地说,我有两个继承自 List 的模型:

class RegularList < List
class OtherList < List

我有一个处理这些操作的列表控制器,但我只使用表单创建带有 RegularList 的新模型。即,我使用form_for 创建新List 对象的唯一情况是使用RegularList。我想做的是:

class ListsController < ApplicationController

def new
  @list = RegularList.new
end

否则创建新列表的路线看起来像 regular_list/new,但我希望它只是列表/新。想法?

编辑:问题是当我使用上面的代码时,我得到一个“未定义的方法”错误。我的观点是这样的:

...

因此,在 Lists 控制器中使用 RegularList 对象似乎存在一些问题,这是我要解决的主要问题。抱歉,我意识到这不是最清楚的解释。

4

2 回答 2

12

我知道这有点晚了,但也许这对其他人有帮助。您想使用该becomes方法。假设您正在编辑@list它是RegularList. 然后做

form_for @list.becomes(List)
于 2011-01-17T21:50:02.700 回答
-4

我正在使用 STI 并且想知道,我是否必须为每个型号配备一个单独的控制器?

不,你没有。

于 2010-03-16T20:37:27.577 回答