我有这样的事情:
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查询?
答案 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
是否验证其最后一条记录是否会呈现其他内容。您自己的代码并按照您需要的方式进行更改,并告知其是否有效。