Array
first
at(0)
总是会返回与<%= debug sections.at(0) %>
<%= debug sections.first %>
相同的内容吗?我称之为事物的顺序会影响结果。如果我在Rails的部分视图中调用以下代码:
<%= debug sections.first %>
<%= debug sections.at(0) %>
两个输出都匹配。但是,如果我将订单切换到此:
first
我得到<%= debug sections.last %>
<%= debug sections.first %>
<%= debug sections.at(0) %>
返回的数组中的最后一项。同样,如果我这样做:
{{1}}
前两个条目匹配,最后一个匹配。这是怎么回事?
答案 0 :(得分:2)
我发现了问题。 sections
在调试中打印为sections
数组,但实际上是ActiveRecord::Relation
,它有点折叠成数组。因此,通过调用first
我实际上在first
上获得了Relation
的结果,无论出于何种原因,其实际上是具有最高ID的部分(也就是&#34;最后&#34;项目)。将我的查询转换为返回Section.where(...).all
而不是Section.where(...)
解决了问题。