RUBY ON RAILS 4.2.3计算平均值

时间:2016-06-15 23:00:49

标签: ruby-on-rails ruby

我是初级RoR程序员。 我知道Ruby语言有一个计算方法,当我在rails console ModelName.average(:something)中输入它时,它会计算字段:something的平均值。它有效,但如何为视图添加平均值?

我有一个物品目录。每个项目都有一个评论,其中包括评级(整数)。

如何在视图中显示(即 show.html.erb )Review模型中所有评级字段的平均值?

3 个答案:

答案 0 :(得分:1)

有多种方法可以做到这一点。最简单的方法是将其作为控制器上的状态公开,即@average,然后可以在视图中访问该状态。虽然很容易,但我不推荐这种方法。

我建议的是,在你的模型上添加一个方法, model_instance#review_ average当您将控制器的@model_instance操作中的模型实例(使用#show)公开给视图时,您只需调用@model_instance.review_average

第二种方法的优势是什么?它隐藏了视图和控制器的逻辑,并将其推送到模型中,这反过来使编写自动化测试用例变得更加容易。

要实现平均值,请检查:How do I create an average from a Ruby array?

我也猜测你有很多关系。做上述事情应该不会太难。

您必须注意的一件事是n + 1个查询,但只有当您必须在索引页面中显示平均值时,这才成为问题。

答案 1 :(得分:0)

只需将以下内容添加到show.html.erb:

<%= @model.average_rating %>

答案 2 :(得分:0)

RESOLVE 逐步:

第一步:添加到您的模型控制器,以显示: @rating = Model.where(:model_id => params[:id]).average(:attribute).to_i

第二步:将模型视图添加到show.html.erb: <%= @rating %>

model_id =您的模型,即帖子:post_id :attribute =您的属性,即:评分

一切都是。