数组不能强制转换为Float

时间:2013-10-28 04:48:38

标签: ruby-on-rails ruby-on-rails-3.2

由于<%=“%。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

2 个答案:

答案 0 :(得分:0)

错误似乎是因为@comparecomp_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中选择适当的值并执行算术。