1

日付範囲に基づいていくつかの結果を表示する Rails アプリケーションがあります。日付を設定するためにいくつかのグローバル変数を使用しています。私のコードは以下のようになります:

#index.html.erb 

  <td>From: <%= $from %></td>
  <td>To: <%= $to - 1.day%></td>


#controller

if (params[:first] || params[:next] || params[:previous])
    if params[:first]
        $from = Date.today - 7.day
        $to = Date.today + 1.day
    end

    if params[:next]
        $from = $from - 7.day
        $to = $to - 7.day
    end 

    if params[:previous]
        if $to != Date.today + 1.day
             $to = $to + 7.day
             $from = $from + 7.day
        end
    end 
end

このコードは正常に動作しているように見えますが、複数のマシンからアプリケーションにアクセスすると、グローバル変数がインスタンスごとに一意ではないため、混乱します。

そこで、グローバル変数の代わりに @variable (インスタンス変数) を使用しようとしました。しかし、ビューからページを送信するたびに、すべての変数が NULL にリセットされ、値がコントローラーに保持されません。ここで問題に対処するための指針を誰かが教えてくれませんか。

4

1 に答える 1

2

これ以上のコンテキストがなければ、特定の問題が何であるかは不明です。それは言った:

コントローラーはリクエストごとにインスタンス化されます。インスタンス変数はリクエスト間で明らかにリセットされます。

おそらく、これらの/変数before_filterをインスタンス化するためのおよび/またはいくつかのユーティリティメソッドですか?fromto

ifまた、各パラメーターのステートメントのラッパーは冗長に見えます。本当に必要ですか?

于 2013-03-27T22:17:44.510 に答える