0

ビューに <%= "%.1f" % (r.lint/@compare*100) %> 行があるため、Rails アプリケーションに「Array can't be coerced into 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
4

2 に答える 2

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
于 2013-10-28T04:54:44.153 に答える
0

あなた@compareは実際には[:comp_lints](それが何であれ)の配列です。するとr.lint/@compare、Ruby は @compare (Array) を Float に変換しようとします。これは起こり得ません。

から適切な値を選択し@compare、演算を実行する必要があります。

于 2013-10-28T04:55:31.187 に答える