2

コンテンツを管理するために構築しているシンプルなアプリでデータを構造化する方法について、以前に質問しました。答えは、単一テーブル継承を調べることでした。それがチケットになると思います。

私はかなりの数の例を読みましたが、常に省略されているように見えることの1つは、:type列が実際にどのように入力されるかです。ユーザーがタイプを選択できるように、ドロップダウン付きのフォームフィールドを含めますか?

私はSTIがどのように機能するかを完全に理解していると思います(タイプフィールドはクラス名を取ります)が、それでも非常に基本的なものが欠けています(そしておそらく非常に明白ですが、私はそれを見逃しています)。誰かが私に記入できますか?

私は次のような目次を持っています:

id
type
name
desc

そして、異なるタイプは「サイト」、「ブログ」、「写真」になります。

4

2 に答える 2

6

「サイト」、「ブログ」、「写真」のすべての情報を目次に保存するとします。によってオブジェクトを開始するContent.newと、タイプフィールドに値が割り当てられません。

ただし、「コンテンツ」モデルから実際に継承された「サイト」、「ブログ」、または「写真」からクラスを開始する と、タイプフィールドにmodel_name(この場合は)が自動的に割り当てられSite.newます。Site.createSite

同様に、そうすると、タイプ列などにブログBlog.newが割り当てられます。

于 2010-11-30T07:25:00.323 に答える
1

@jyoseph、はい、あなたは絶対に正しいです。新しいビューにドロップダウンを追加して、タイプ(この場合は「サイト」、「ブログ」、「写真」)を保持するビューを編集できます。次のように、アプリケーションヘルパーファイルでヘルパーを作成することもできます。

def content_type
   return ["Site", "Blog", "Photo"]
end

次に、contents/new.html.erbで実行できます

<p>
    <%= f.label :type %><br />
    <%= f.select :type, content_type %>
</p>

それを試してみてください、これはうまくいくかもしれません。

誰かがSTIについてもっと知りたい場合に備えて、私のブログにアクセスしてください

于 2010-11-30T09:28:07.003 に答える