2009-05-27 7 views
0

ビューにオブジェクトをインスタンス化してから部分的に渡すのはいいですか?[OK]をクリックしてオブジェクトをビューでインスタンス化しますか?

<%= render :partial => "trade_new", :locals => {:trade=>Trade.new("e", "b") } %> 

またはインスタンス変数としてコントローラ内の任意のオブジェクトをインスタンス化した方がよい。

@trade = Trade.new("e", "b") 

し、このようなビューに部分的にインスタンス変数を渡す:

<%= render :partial => "trade_new", :locals => {:trade => @trade } %> 

私の推測では、複数のテンプレートがこの新しいオブジェクトを同じアクションから部分的に渡す必要がある場合など、コントローラ内の新しいオブジェクトをインスタンス化して重複を避ける方がよいでしょう。

答えて

2

まず、ビュー内でオブジェクトをインスタンス化しても問題ありません。あなたの顔には何も吹き飛ばされません。ただし、アーキテクチャを階層に分割することのメリットが不足しています。

オブジェクトをコントローラでインスタンス化する方が良いです。いくつかの理由が含まれています - デカップリングのために、より良い再利用、より簡単なテスト、より良いデザインが含まれます。

プレゼンテーションパターンの記事hereを参照してください。

+1

はい、ビューでインスタンス化するために起こりますが、通常は良いデザインではありません:) – workmad3

+0

フォームに渡す空のオブジェクトをインスタンス化する必要がある場合は、 、または選択ボックスを表示するオブジェクトの束をつかむことができます。私はMVCの単一の涙を流すことなくView(または後者のヘルパー)の両方を行います。 –

関連する問題