2

Railsアプリケーションのインスタンス変数のスコープについて、ある程度のクリアランスが必要です(他のフレームワークに同様のパラダイムがあるかどうかはわかりません)

インスタンス変数があるとしましょう

@page_count = some_value

コントローラのインデックス アクション内

というわけで、この変数のアクセシビリティについて。ビュー内でアクセスできる必要があり、モデルからも推測できます(そうですか?)

ここで、(他のリクエストを介して) 他のアクションを呼び出すと、たとえば、同じコントローラーでエクスポートすると、変数 @page_count は、インデックス アクション内で設定された値を持ちません。

インスタンス変数は、異なるリクエスト間でその値を保持しませんよね?

現在、これに対処するために、セッション スコープ変数を使用しています。

session[page_count] = some_value # inside index action

これで、変数はエクスポート アクションを含む他のアクション内で使用できるようになります (他のリクエストを介して)。

これは良いアプローチですか?セッションを使用していますか?または、異なるリクエスト間で値を保存するためのより良い代替手段はありますか?

提案/コメント/ポインタをお願いします?

4

2 に答える 2

0

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

于 2012-04-24T06:02:45.840 に答える
0

何を設定するかによると思います@page_count

データベーステーブルの「ページ」の行数のようなもので、次のように設定すると、

@page_count = Page.all.count

次に、 aを使用してbefore_filter、必要なすべてのコントローラーアクションに値を設定できます。フィルターの詳細については、こちらをご覧ください。

それ以外の場合、@page_count の値が計算されたものであり、アクションごとに変化する場合は、すべてのアクションでそれを定義するだけでよいと思います。

于 2012-04-22T17:55:36.703 に答える