繁体   English   中英

在同一控制器上使用STI路径

[英]Using STI path with same controller

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

class RegularList < List
class OtherList < List

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

class ListsController < ApplicationController

def new
  @list = RegularList.new
end

否则,用于创建新列表的路线看起来像normal_list / new,但我希望它只是list / new。 思考?

编辑:问题是当我使用上面的代码时,出现“未定义的方法”错误。 我的看法如下:

...

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

我知道这有点晚了,但这也许会对其他人有所帮助。 您要使用becomes方法。 假设您正在编辑@list ,这是RegularList的实例。 然后做

form_for @list.becomes(List)

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

不,你没有。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM