Ruby on rails 在使用RubyonRails和Haml的当前迭代中,如何访问数组中的下一项?
我遍历一个名为questions的数组。我需要将当前的“question.title”与下一个“question.title”进行比较。它如下所示:Ruby on rails 在使用RubyonRails和Haml的当前迭代中,如何访问数组中的下一项?,ruby-on-rails,arrays,ruby,haml,Ruby On Rails,Arrays,Ruby,Haml,我遍历一个名为questions的数组。我需要将当前的“question.title”与下一个“question.title”进行比较。它如下所示: - questions.each_with_index do |question, index| -if question.title != questions[index + 1].title do this -else do that 我得到这个错误: nomethoderor at/a
- questions.each_with_index do |question, index|
-if question.title != questions[index + 1].title
do this
-else
do that
我得到这个错误:
nomethoderor at/appenders/1152123/custom_questions==>nil:NilClass的未定义方法“+”当迭代到达最后一个问题时,
问题[index+1]将出现nomethoderor
。title
因为问题[index+1]
是nil
你可以用它来获得每一对连续的问题:
questions = %w(q1 q2 q3 q4)
questions.each_cons(2) do |one_question, next_question|
p one_question
p next_question
puts
end
它输出:
"q1"
"q2"
"q2"
"q3"
"q3"
"q4"
PS:这应该少了一个问题,它将简化您的代码。您可能还有另一个问题,但是如果没有整个视图和错误消息,很难判断。您确定错误在这一行,因为
index
永远不应该nil
在那里?在最后一个问题上,index+1将为零。您可以将arescue nil
作为创可贴,但您可能应该更改您的逻辑。最后一个问题的答案不是nil
,但它将超出数组的范围,因此需要检查index==(questions.length-1)
这并不能解释错误,因为它说未定义的方法+用于nil:NilClass
,但是索引将永远不会是nil