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])} %>
所以我的 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])} %>