Ruby on rails 在控制器Ruby中设置类变量

Ruby on rails 在控制器Ruby中设置类变量,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个控制器类 class MyController < ApplicationController def firstMethod @obj = #get friends list from FB end def secondMethod puts @obj end end class MyController

我有一个控制器类

class MyController < ApplicationController

    def firstMethod
       @obj = #get friends list from FB
    end

    def secondMethod
     puts @obj
    end
end
class MyController
所以在/my/firstMethod中,我有

  <%= link_to "Likes","/my/secondMethod" %>

调用该方法并呈现页面,但“puts@obj”显示为空

我知道一种方法是在过滤之前使用,但由于这是一种昂贵的操作,我只想获得一次朋友列表

有什么建议吗


Harshit

我会使用before_过滤器并将结果存储在缓存中


您也可以使用会话来存储朋友列表,但我会避免这种情况,除非存储的列表具有受控长度。

您可以使用类变量(
@@obj
),但除非您通过分析验证这是一个性能瓶颈,否则您应该使用before\u筛选器。此外,Rails还提供了一个功能,它允许您缓存比好友列表多得多的内容。还要注意,在开发模式下,每次请求时都会重新加载控制器,因此只能将
@@obj
用作cache@Niklas你确定一个类变量只在一个请求期间存在吗?@NicolasGUILLAUME:是的,我刚刚测试过它。当然,只有在开发模式下,我更喜欢在缓存中存储,而不是会话大小非常大。