2011-06-08 78 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方法的名稱瀏覽所有視圖並在那裏更改它,而使用實例變量您只需在控制器中更改它。使用實例變量還可以使您的視圖更加可重用。然而,如果你發現自己在你的控制器中使用了大量的實例變量,那麼可能值得研究在那裏增加另一層抽象來整理一些東西。

在我看來,你給出的例子很好。

相關問題