データフィールドの中央値計算を実行しようとしています。データフィールドのループループスルー
各Glaze
には、次の小数フィールドがあります。"k2o", "na2o", "cao", "bao", "mgo", "sro"
。
Glaze
のデータベース全体を使用して各データフィールドの中央値を計算する方法を書きたいと思いますが、それぞれoxide
の個別のメソッドを記述したくありません。
oxide
の名前の配列を使用してループする予定でした。私は@oxides = ["k2o","n2o","cao","bao","mgo","sro"]
という配列を定義しました。
ビュー:
<% @oxides.each do |oxide| %>
<%= oxide %> median: <%= median(oxide) %><br/>
<% end %>
コントローラー:
def median(oxide)
g = Glaze.all
array = g.map { |g| g.oxide.to_s.to_f.round(3) }
sorted = array.sort
len = sorted.length
(sorted[(len - 1)/2] + sorted[len/2])/2.0
end
helper_method :median
これはエラーを返します:
unknown method 'oxide'
私は配列にoxide
の代わりにに置き換えた場合、それは正常に動作します。私は変数の型に慣れていませんが、oxide
フィールドが存在しないのでメソッドを探していると思います。
oxide
の値を調べて、g.k2o ...、g.na2o ...、g.cao ...などを簡単にループできるようにするにはどうすればよいですか。 ?
Glaze