您好我正在尝试在我的索引页面中显示最后两个(少数)值如何在rails中执行此操作?
这是我的_index.html.erb文件(以新的方式呈现)
<table class="table table-hover">
<% PriceLog.order(price_date: :desc).each_with_index do |price_dated,index| %> // problem is here in looping
<tr>
<% @products.each do |product| %>
<td>
<%= PriceLog.where({product_id: product.id, price_date: price_dated.price_date}).last.price_date.strftime('%d-%B-%Y') %>
</td>
<td>
<%= PriceLog.where({product_id: product.id, price_date: price_dated.price_date}).last.price %>
</td>
<% end %>
</tr>
<% end %>
</table>
并在我的控制器中
def new
@pricelog = PriceLog.new
@products = Product.all
@price = PriceLog.all
end
更新
以下是我得到的输出我有三种不同的产品,如Product1,Product2,Product3以及相应的日期和价格
这里我的值重复3次(每次我点击提交表单值时显示3次但存储一次)我应该如何停止复制并仅显示最后几个值
任何帮助都必须得到赞赏
谢谢
答案 0 :(得分:1)
您是否尝试过Model.last(2)
行?
答案 1 :(得分:1)
您正在循环中运行循环。您的PriceLog.each_with_index遍历所有PriceLogs,然后在其中您的@ products.each(您在控制器中定义)循环遍历您的所有产品。因此,每个产品都会针对每个PriceLog重复一次。
除此之外,您的视图中有很多逻辑。通常不赞成从那里打电话给模特;应该在控制器,帮助器或一些自定义演示者对象中发生。
答案 2 :(得分:1)
在您的控制器中而不是
@products = Product.all
将其更改为
@products = Product.all.order("id DESC").limit(2)