由于<%=“%。1f”%(r.lint / @ compare * 100)%>我在我的rails应用程序中出现了'无法强制转换为Float'错误在我看来。任何帮助将不胜感激。
查看
<% @result.each do |r| %>
<%= "%.2f" % (r.lint/227) %></br>
<%= "%.2f" % (r.lint/227/2.47) %></td>
<%= "%.1f" % (r.lint/@compare*100) %>
<% end %>
控制器
def trial
@result = Result.where('trial_id' => params[:trial_id]).order('lint DESC')
@compare = Trial.where('trial_id' => params[:trial_id]).pluck(:comp_lint)
end
答案 0 :(得分:0)
错误似乎是因为@compare
是comp_lint
Trial
的数组。
如果在您的情况下它始终为1,则在.first
@compare
@compare = Trial.where('trial_id' => params[:trial_id]).pluck(:comp_lint).first
否则,如果你想总结所有的comp_lint,那就去做
@compare = Trial.where('trial_id' => params[:trial_id]).pluck(:comp_lint).sum
答案 1 :(得分:0)
您的@compare
实际上是[:comp_lints]
的数组(无论是什么)。
所以当你这样做时,r.lint/@compare
,Ruby会尝试将@compare(Array)转换为Float。哪个不可能发生。
您需要从@compare
中选择适当的值并执行算术。