2011-03-09 15 views
0

私は基本的に私のRails 3アプリケーションでつぶやきをキャッシュしようとしているので、すべてのページをリフレッシュする必要はありません。私は2つのクラス変数を持っています:ビュー内でコントローラのクラス変数にアクセスするにはどうすればいいですか?

@@tweet_time = Time.now 
@@tweets = Twitter.user_timeline(TWEET_ACCOUNT)[0,NUMBER_OF_TWEETS] 

これらは私のコントローラにあります。コントローラで

、私は

@@tweet_time < 1.hour.ago 

と場合は、私はつぶやきと@@ tweet_timeを@@リセットかどうかを確認します。

しかし、ビューで@@つぶやきをループしようとすると、@@ tweetsは初期化されていないクラス変数です。私はそれが技術的にActionControllerではなくActionViewから呼ばれているからだと思います。

ビューで@@つぶやきにアクセスするにはどうすればよいですか?

PS私がこれを完全に後方に行っている場合は、自由に批評をして、うまくいけば良い方法を教えてください。あなたが提供できるフィードバックは本当にありがたいです。

+0

railsはステートレスですが、どのようにクラス変数をキャッシュしますか? – fl00r

+1

これはmemcacheの目的です。 –

+0

Jakub、あなたは正しいです。あなたはそれを私の答えに入れることができますか? Memcacheを使用するには、Railsキャッシュ機構として設定する必要がありますか?または、その構造体の外で使用できますか? – AKWF

答えて

0

私は今これを行うには "ダリ"宝石を使用しています。 MemCacheを私が理解できるものから使用するのはすばやい方法です。

3

コントローラ内のクラス変数が要求を超えて存続するとは思わない。それはコントローラの義務ではありません。

Redisのようなメモリ内のデータベースを使用してツイートをキャッシュしたくない場合は、クラス変数をモデルに移動してコントローラからクエリできます。

+0

あなたは正しいです。クラス変数やその他の変数は、要求を超えて存続しません。間違いなくここにレディスやMemcachedのようなものが必要です.... –

関連する問題