我是初级RoR程序员。
我知道Ruby语言有一个计算方法,当我在rails console ModelName.average(:something)
中输入它时,它会计算字段:something
的平均值。它有效,但如何为视图添加平均值?
我有一个物品目录。每个项目都有一个评论,其中包括评级(整数)。
如何在视图中显示(即 show.html.erb )Review模型中所有评级字段的平均值?
答案 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
=您的属性,即:评分
一切都是。