2013-10-31 50 views
0

是否应Arrayfirst总是返回同样的事情at(0)?我称之为事物的顺序会影响结果。如果我请在导轨中的局部视图以下代码:阵列第一不匹配的(0)

<%= debug sections.at(0) %> 
<%= debug sections.first %> 

输出匹配两者。但是如果我切换以这样的:

<%= debug sections.first %> 
<%= debug sections.at(0) %> 

我得到first返回数组中的最后一项。同样如果我这样做:

<%= debug sections.last %> 
<%= debug sections.first %> 
<%= debug sections.at(0) %> 

前两项匹配,最后一项匹配。这里发生了什么?

+2

你可以添加什么'章节是什么,你从每个例子得到的输出是什么? –

+0

我会很高兴看到'会议'数组的数据 – ck3g

+0

这是一个哈希大阵。我试图避免在这里播放大量文字。让我试着把它分成两部分或什么东西,并把它放在这里。作为更新,我注意到如果在调用之前调用'<%= sections.length%>',问题就会消失。这就像数组处于某种“未完成”状态或某种状态,并调用某些函数“修复”它。 – aardvarkk

回答

2

我发现了这个问题。 sections在调试中作为sections的数组打印,但实际上是ActiveRecord::Relation,它被折叠为数组。其结果是,通过调用first我其实得到的Relation,这无论出于何种原因竟是最高ID的部分(又名“最后”项目)的first结果。转换我的查询返回Section.where(...).all而不是Section.where(...)修复了这个问题。