2012-03-11 8 views
3

私はSTIモデルを持ち、派生モデルのベースビューを再利用したいと考えています。 たとえば、教師<人がいる場合は、教師の視野に自分の視野が入るようにしたいと思います。Rails STIおよびビュー再利用

これを達成する方法はありますか?

答えて

1

あなたの質問を理解していれば、デフォルトで利用可能です。 STIを使用する場合、各派生モデルは基本クラスのすべてのフィールドにアクセスできます。 (任意のテーブル上のフィールド)

部分をレンダリングする場合たとえば、あなたは、単に通常のように、オブジェクトを渡すことができます。

= render :partial => 'person', :object => @teacher 

上記のコードは、いくつかの方法で行うことができますが、私はちょうどよ説明しようとしている。

+0

この方法を使用するときにレイアウトを制御する方法はありますか?これを行うと、各項目の最後に編集/削除リンクが表示され、派生フィールドを追加する機会はありません(冒頭に配置したくないと仮定して)。 – user1080584

+0

これを行うにはいくつかの異なる方法があります。私はビューロジックのファンではありませんが、人の種類をチェックするif文を使用できます: "person.kind_of?(Teacher)" –

0

教師と人員がいる場合は、教師の意見の中にいる人からビュー(部分、テンプレート)をレンダリングできます。あなたは教師の内側の線の下に書くことができます

あなたは_teacher.html.erb_person.html.erbパーシャルを持っている場合は、教師1の内側部分の人をrenderことができるように右の部分を使用し

= render :partial => 'persons/<PARTIAL NAME>' 

= render :template => 'persons/<TEMPLATE>' 

= render :file => 'persons/new' 
0

renderを見てオブジェクトでrenderを呼び出すと、右部分がレンダリングされます。

# @aldo is a Person, this will render _person.html.erb 
render @aldo 

# @mr_brown si a Teacher, this will render _teacher.html.erb 
render @mr_brown 

教師は、その場合には両方の情報を持つ人を部分的にレンダリングするためです。

+0

この方法を使用するときにレイアウトを制御する方法はありますか?これを行うと、各項目の最後に編集/削除リンクが表示され、派生フィールドを追加する機会はありません(冒頭に配置したくないと仮定して)。 – user1080584

+0

申し訳ありませんが、あなたは何を意味するのかよく分かりません。あなたは2つの部分的な部分を持っていて、その人を先生のものにしますか?人のフィールドは表示されていませんか? –

関連する問題