2012-04-22 6 views
2

にRailsとMVCアーキテクチャでは、インスタンス変数のスコープのクリアランスが必要コントローラのindexアクション内部は</p> <p>私はインスタンス変数を持っていると言うことができます(他のフレームワークが同様のパラダイムを持っているかどうかわからない)私はRailsアプリケーションでのインスタンス変数のスコープにいくつかのクリアランスを必要とする一般的な

@page_count = some_value 

ので、この変数のアクセスについて。

ここで、他のアクション(他のリクエストを介して)を呼び出すと、同じコントローラでエクスポートすると、変数@page_countにはないことがあります私はセッションを使用していますindexアクション

の内側に設定されたその値(インスタンス変数は、右?を異なる要求間でその値を保持しないでしょう)これに対処するため

現在は

、変数スコープ
session[page_count] = some_value # inside index action 

変数はエクスポートアクション(他のリクエストを介して)を含む他のアクション内で利用可能になります

これは良いアプローチですか?セッションを使って?異なるリクエスト間に値を格納するためのより良い選択肢がありますか?

提案/コメント/ポインタを入力してください。

答えて

0

@page_countに設定した内容によって異なると思います。それはdbテーブルの行数「ページ」のようなものだ、とあなたはそれが好きな設定、

@page_count = Page.all.count 

場合

はその後、あなたはbefore_filterを使用することができますし、あなたがそれを必要とするすべてのコントローラのアクションのためにそこに値を設定します。 filtersの情報があります。

それ以外の場合、@page_countの値が何か計算され、アクションごとに変更された場合、すべてのアクションで定義する必要があると思います。

+0

@page_countはカスタムクエリを使用して計算されます。行動ごとの変化はありません。私はそれが異なる要求を通して呼び出される異なるアクションの間にその価値を保持したいと思っています。 –

+0

しかし、別のアクションからクエリを呼び出した場合、別の/間違った値が返されますか? –

+0

は現在、必要な値とは異なる値を返します。私は、要求の間に同じ値を保持したい場合 –

0

私は大体の経験者ではありませんが、グローバル変数としてグローバル変数を作成したら、別の方法で同じコントローラでそのグローバル変数にアクセスできます。私はグローバル変数を使うのは良い習慣ではないが、あなたの問題を解決することを願っています。

+0

あなたの答えは、urjit、thnxです。この特定の質問のために、私はベストプラクティスを探しています。解決策だけではありません。 –

関連する問題