在rails中,在操作方法中使用局部变量或实例变量是否重要

时间:2011-10-25 05:52:48

标签: ruby-on-rails instance-variables

我有很多动作方法,不需要为渲染视图创建实例变量,因为这些方法只会重定向到其他控制器的其他动作。我想知道:为了遵循Rails的惯例总是创建实例变量是一个好习惯,或者没有这样的事情。我的直觉是局部变量降低了内存成本,但代码看起来并不漂亮。

3 个答案:

答案 0 :(得分:10)

如果没有将实例变量发送到视图,那么创建实例变量并不是惯例。

  • 变量应尽可能缩小范围。
  • 如果他们没有传递给视图,他们应该是本地人。
  • 如果您有大量的观看数据(而不是大量的实例变量),请使用演示者。

如果多个方法在视图之前对它们进行操作,则可以使用实例变量 ,即使它们未在视图中使用,但这会使代码更难推理和孤立地测试。

如果您发现自己使用实例变量来进行中间计算,则可能需要重新考虑您的流程和/或设计。

答案 1 :(得分:7)

大多数情况下,我们需要在以下情况下使用实例变量,

  1. 当我们需要从视图中访问变量时
  2. 如果我们从操作中调用方法,而不是返回值,我们可以直接从被调用的方法更新变量。
  3. 如果我们的工作可以使用局部变量完成,我们为什么要使用实例变量。

答案 2 :(得分:4)

在控制器中使用实例变量的唯一原因是将事物放入视图中而不必显式传递一堆状态。

如果您没有任何状态,那么您没有任何实例变量,因此没有理由使用它们。