Rails 5 在 .erb 文件中崩溃,但仅当 运行 在服务器上时

Rails 5 crash in .erb file but only when running on server

所以我的 erb 文件中有这段代码:

<% a = ["Apple","Orange","Banana","Carrot","Turnip","Rabbit","Lion"] %>
<% arr = @things.where(:active => 1).sort_by{|el| a.index(el[:name])}%>
<% for product in arr %>

它在第 2 行崩溃并出现此错误:

comparison of Fixnum with nil failed

我用这个替换了它:

<% arr = @things.sort_by{|el| a.index(el[:name])}%>

它仍然崩溃...当我用这个更改整个代码块时:

<% for thing in @things %>

崩溃消失了。 这很奇怪,因为它在本地运行良好。

无法在数组 a 中找到具有 el[:name] 的元素,因此它 returns nil 并且无法排序。

输入三元运算符和return -1 如果找不到:

<% a = ["Apple","Orange","Banana","Carrot","Turnip","Rabbit","Lion"] %>
<% arr = @things.where(:active => 1).select{|el| !a.index(el[:name]).nil?} %>
<% arr = arr.sort_by{|el| a.index(el[:name])} %>

或者更好地过滤它然后排序:

<% a = ["Apple","Orange","Banana","Carrot","Turnip","Rabbit","Lion"] %>
<% arr = @things.where(:active => 1).select{|el| !a.index(el[:name]).nil?}.sort_by{|el| a.index(el[:name])} %>