2009-05-27 51 views
0

在将视图中的对象传递给部分之前,可以实例化对象吗?确定要在视图中实例化一个对象?

<%= 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 2009-05-27 06:53:01