有没有办法知道我何时到达fields_for循环中的最后一条记录?

时间:2015-05-20 06:27:14

标签: ruby-on-rails ruby-on-rails-4

我有这样的事情:

index.html.haml

%h1 Products
=form_for @products do |p|
  %p
    =p.label :name
    =p.text_field :name
  %h3 Sales
  =p.fiels_for :sales do |s|
    =render 'sale_fields', s: s

_sale_fields.html.haml

%p
  =s.label :date
  =s.text_field :date, class: 'datepicker'
%p
  =s.label :amount, 'Amount Sold'
  =s.text_field :amount

这将打印Product的名称以及Sale中包含的销售额。我想知道我何时到达:sales的最后一张唱片,所以我可以打印不同的内容。

我知道fields_for生成的集合有一个index方法,但我不太清楚如何使用它,或者当我到达最后一条记录时这可以让我知道。我知道我可以在进入fields_for循环之前检查记录数量,然后将其与index进行比较,但有没有办法知道这一点而不必进行额外的SQL查询?

1 个答案:

答案 0 :(得分:1)

试试这个......

%h1 Products
= form_for @products do |p|
  %p
    = p.label :name
    = p.text_field :name
  %h3 Sales
  = p.fields_for :sales do |s|
    - if p.sales.last == s
      %p This is the last Sale
    - else
      = render 'sale_fields', s: s

在这里,您要检查p.sales.last == s是否验证其最后一条记录是否会呈现其他内容。您自己的代码并按照您需要的方式进行更改,并告知其是否有效。