实例变量与在Controller中调用的方法

时间:2011-06-08 10:56:37

标签: ruby-on-rails

我的控制器中有以下代码。

  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变量来使用它们。

由于

1 个答案:

答案 0 :(得分:2)

如果您直接在视图中引用客户方法,则将视图直接绑定到您的模型,即如果由于某种原因您需要更改客户的previous_orders方法的名称,则必须通过所有的视图并在那里进行更改,而使用您使用的实例变量,您只需在控制器中更改它。使用实例变量还可以使您的视图更易于重复使用。

但是,如果您发现自己在控制器中使用了大量实例变量,那么可能需要调查在那里添加另一层抽象来整理。

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