2011-06-08 79 views
0

我的控制器中有以下代码。实例varibale与控制器中的方法调用

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变量使用这些变量。

感谢

回答

2

如果直接在视图中引用的客户,你的方法是直接绑即视图到模型中,如果由于某种原因,你需要的客户,你不得不改变previous_orders方法的名称浏览所有视图并在那里更改它,而使用实例变量您只需在控制器中更改它。使用实例变量还可以使您的视图更加可重用。然而,如果你发现自己在你的控制器中使用了大量的实例变量,那么可能值得研究在那里增加另一层抽象来整理一些东西。

在我看来,你给出的例子很好。

相关问题