rails视图中的类变量?

是否可以在视图中引用ruby类变量?

更常见的方法是将类变量包装在辅助方法中:

# in /app/controllers/foo_controller.rb: class FooController < ApplicationController @@bar = 'baz' def my_action end helper_method :bar def bar @@bar end end # in /app/views/foo/my_action.html.erb: It might be a class variable, or it might not, but bar is "<%= bar -%>." 

不幸的是,类( @@variables )不会复制到视图中。 您仍然可以通过以下方式获取它们:

 controller.instance_eval{@@variable} 

要么

 @controller.instance_eval{@@variable} 

或其他不太重要的东西。

使用Rails,100人中99.9人永远不应该这样做,或者至少我想不出一个好理由。

Rosen的答案很好,因为它隐藏了什么样的变量“bar”,但是如果你有很多这样的变量,那么定义一堆辅助方法的需求是没有吸引力的。 我在我的控制器中使用以下内容:

 @bar = @@bar ||= some_expensive_call 

这样,“some_expensive_call”只进行一次,结果被复制到每个实例的@bar中(因此视图可以将其作为@bar访问)。