0

由于我认为 <%= "%.1f" % (r.lint/@compare*100) %> 行,我的 rails 应用程序中出现了“无法将数组强制转换为浮点数”错误。任何帮助,将不胜感激。

看法

<% @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
4

2 回答 2

0

错误似乎是因为@compare是.comp_lintTrial

如果在你的情况下它永远是一个然后.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
于 2013-10-28T04:54:44.153 回答
0

@compare实际上是一个数组[:comp_lints](不管是什么)。因此,当您这样做时r.lint/@compare,Ruby 会尝试将 @compare (Array) 转换为浮点数。这不可能发生。

您需要从中选择适当的值@compare并执行算术运算。

于 2013-10-28T04:55:31.187 回答