Ruby / Rails - 是否可以在视图中执行ruby计算?

时间:2011-06-01 19:02:36

标签: ruby-on-rails ruby view

我正在尝试执行一个看起来像我必须在视图中的计算。

在视图中我有

<% for post in @user.posts %>
    <%= post.tasks.count / @projects.tasks.count  %>
<% end %>

我正在尝试显示百分比....当我放置&lt;%= post.tasks.count%&gt;它本身显示2和&lt;%= @ projects.tasks.count%&gt;它显示4。

但是当我尝试做&lt;%= post.tasks.count / @ projects.tasks.count%&gt;它显示0不是.50或1/2。

我在视图而不是控制器中执行此逻辑的原因是我想显示for循环的每次迭代的动态百分比

2 个答案:

答案 0 :(得分:6)

你得到零的原因是两个数字都是整数,所以它正在进行整数除法。如果你将第一个转换为浮点数,那么你将得到一个浮点数作为结果。

如果要将数字格式化为百分比,您还需要使用number_to_percentage帮助程序。所以你的视图代码看起来像这样:

<%= number_to_percentage( post.tasks.count.to_f / @projects.tasks.count ) %>

并在您的视图中生成输出50%。如果需要进一步自定义,也可以为该帮助程序指定精度和一些格式选项。

答案 1 :(得分:4)

整数运算产生整数结果。尝试:

<%= post.tasks.count.to_f / @projects.tasks.count  %>

要控制显示精度等,您可能需要以下内容:

<%= "%4.2f" % (post.tasks.count.to_f / @projects.tasks.count) %>