ユーザーがリンクをクリックするたびに、彼にデータの次の部分を表示します。さ毎回コントローラー内の@instance_variableを増やす
# link in a view
<%= link_to 'Next', user_test_do_path, controller: :do, action: :list_update, user_id: 1, test_id: 2, remote: :true, [email protected] %>
# controller and action
class DoController < ApplicationController
def list_update
@i+=1
@cur_test = Test.where(id: params[:test_id])
@cur_q_all = Question.where(test_id: @cur_test)
@cur_q = @cur_q_all[@i]
@cur_ans_all = Answer.where(question_id: @cur_q)
end
end
しかし、@i
がインクリメントされないと常に0 私の質問に等しいまま:私はその目的のためにインスタンス変数@i
を使用していますそれぞれとインクリメント@i
の値を作成する方法link_to
をクリックしてください?
SOLVED!これは私の最終的な作業リンクです。
<%= link_to "Next", user_test_answers_all_path(:current_i => @i), action: :list_update, controller: :do, method: :get, remote: :true %>
ありがとうございます!それは簡単ですが、まだ動作していません - 'link_to'の' current_i:@ i'は何らかの理由でこのヘルパーを呼び出した後に 'list_update'アクションから新しい値を変更しません –
実際に' 'list_update'は0のままですか? 'list_update'に何らかの' puts @ i'と 'puts params [:current_i]'を置いてそれらの値を検証できますか? 'remote:true'は何らかの' js'スクリプトを返して適切にレンダリングする必要があることに注意してください。 – twonegatives
私はあなたを抱きしめましょう!私は間違いがどこにあるのか見つけました - それはlink_toヘルパーのパスにありました - ユーザーをテストページ(アクションショー)にリダイレクトしましたが、テスト/ list_updateアクションページに変更したときには –