0

私は、呼び出しごとにインクリメントされるメッセージ インデックスの現在の番号に従ってメッセージをレンダリングするコントローラー メソッドを (以下に示されていないコードと共に) 持っています。データベースには 6 つのメッセージがあり、最初の 3 つのメッセージについてはすべて正常に動作していますが、インデックスが 3 になると (初期化メソッドでゼロに設定されます)、next_messageメソッドはインデックス 0 でメッセージを返し、それを保持します。 4 番目のメッセージに移動するのではなく、最初の 3 つのメッセージを循環します。このコードの唯一の目標は、データベース内の 6 つのメッセージをすべて取得し、1 つずつ表示することです。

なぜこれが起こっているのか説明できますか?Puts ステートメントは、インデックスが確実に増加していることを示しています。とにかく、私はくだらないアマチュアプログラマーなので、コードがおそらく醜く非効率的であることを認識しています(たとえば、各呼び出しですべてのメッセージを照会するのは無駄に思えます)。問題を修正しながら改善する方法がある場合は、永遠に感謝します。

def next_,essage
   #... (some code ommitted)
   session[:message_index] += 1
   messages = Message.all
   message_index = session[:message_index]
   next_msg = messages[message_index]

   render :json {:next_message => next_msg}
end
4

0 に答える 0