我的控制器中有以下代码。
def index
@customer = Customer.find(params[:customer_id])
@current_orders = @customer.current_orders
@pending_orders = @customer.pending_orders
@previous_orders = @customer.previous_orders
@recurring_orders = @customer.recurring_orders
end
如您所见,所有实例变量(@ current_orders,@ pending_orders等)都可以从@customer获得。
编写此代码的最佳方法是什么? 我是否需要在控制器中创建这些实例变量,或者我只是通过视图中的@customer变量来使用它们。
由于
答案 0 :(得分:2)
如果您直接在视图中引用客户方法,则将视图直接绑定到您的模型,即如果由于某种原因您需要更改客户的previous_orders
方法的名称,则必须通过所有的视图并在那里进行更改,而使用您使用的实例变量,您只需在控制器中更改它。使用实例变量还可以使您的视图更易于重复使用。
但是,如果您发现自己在控制器中使用了大量实例变量,那么可能需要调查在那里添加另一层抽象来整理。
在我看来,你给出的例子很好。