私は、呼び出しごとにインクリメントされるメッセージ インデックスの現在の番号に従ってメッセージをレンダリングするコントローラー メソッドを (以下に示されていないコードと共に) 持っています。データベースには 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