我在一个展示多项选择题的网站上工作。用户可以添加新问题。我想从一个按钮调用下一个问题,所以我需要该按钮来使用下一个ActiveRecord项更新页面。
我的控制器:
def practice
shuffled_questions = Array.new(Question.ids).shuffle
@question = Question.find(shuffled_questions.pop)
end
我的视图一次显示一个问题,我不想重复任何问题,这就是为什么我要将它们从数组中提取出来,但我不知道如何从视图中用数组中的下一个id更新@question
。
我的第一个想法是使用AJAX或OnClick函数更新页面,但似乎行不通。
我读过其他人更新他们的模型和控制器以获得下一个ActiveRecord项,我知道他们在做什么,比如here,但这并不能帮助我理解如何从视图调用更新。
非常感谢你的帮助!
发布于 2018-01-13 09:14:02
在这一行中:
shuffled_questions = Array.new(Question.ids).shuffle
正如@Tamer Shlash指出的那样,您正在创建一个新的数组,并在每次启动practice
操作时对其进行混洗。
你可以试试这个:
def practice
@shuffled_questions = Array.new(Question.ids).shuffle if @shuffled_questions.empty?
@question = Question.find(@shuffled_questions.pop)
end
现在,当您调用practice
操作时,它将只创建一个新数组,并在@shuffled_questions
为空的情况下将其置乱,否则它将持久化已置乱的问题数组,您可以根据需要获得下一个问题。
https://stackoverflow.com/questions/48234443
复制相似问题