Ruby on Rails:实例&类变量不保持控制器中的值

时间:2010-06-15 17:29:10

标签: ruby-on-rails

在我的控制器顶部,在任何方法之外,我有

    @@javascript_is_disabled = false

我有视图调用并调用类似

之类的方法
    @@javascript_is_disabled = params[:javascript_disabled]

但是当我在完全不同的方法中需要@@ javascript_is_disabled时,它总是错误的。

我知道使用params args的方法发生了变化......导致这些方法表现不同,并且适当地

和想法?

1 个答案:

答案 0 :(得分:2)

变量@@javascript_is_disabled类变量,它根据您从中访问它的位置引用不同的内容。在Controller类体内,它不是指在控制器方法或视图中使用它时的相同内容。这实际上是一个涉及Eigenclasses

的非常复杂的主题

我建议使用视图助手或受保护的方法来实现它:

protected

attr_writer :javascript_is_disabled
def javascript_is_disabled
  # Replace false with your intended default value
  @javascript_is_disabled.nil? ? false : @javascript_is_disabled
end

然后,您可以在视图和控制器操作方法中引用它,例如属性javascript_is_disabled = trueif javascript_is_disabled ...

您也可以省略attr_writer ...部分,并始终记得为实例变量@javascript_is_disabled = ...分配值