3

STI を使用していますが、モデルごとに個別のコントローラーを用意する必要がありますか? STI 関係の 1 つのモデルに対して作成および編集アクションのみを使用する状況がありますが、フォームを実行しようとすると「未定義のメソッド」エラーが発生します。より具体的には、List から継承する 2 つのモデルがあります。

class RegularList < List
class OtherList < List

これらのアクションを処理するリストコントローラーがありますが、フォームを使用してRegularListで新しいモデルを作成するだけです。つまり、form_for を使用して新しい List オブジェクトを作成する唯一の状況は、RegularList を使用する場合です。私がやりたいことは次のようなものです:

class ListsController < ApplicationController

def new
  @list = RegularList.new
end

それ以外の場合、新しいリストを作成するためのルートは regular_list/new のように見えますが、単に 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 に答える