まず、ブロックで 2 つの変数を使用することを強くお勧めします。1 つの変数を使用する場合、group_by は変数を、2 つの変数として設定する必要がある値のペアの配列に設定します。グループの [1] でペアにインデックスを付けるよりも、はるかに明確なコードになります。
1 つの方法は、ペアの最初の部分が ID になるため、検索を行うことができます。
<% @products.group_by(&:product_group_id).each do |product_group_id, products|%>
<!--need to get group name here -->
<%= ProductGroup.find(product_group_id).name %>
<% products.each do |product|%>
<%= product.product_name%>
<br>
<% end %>
<% end %>
別の方法として、グループ内に少なくとも 1 つの製品の配列があるため、配列の最初の要素で product_group 関連付けを呼び出すことができます。
<% @products.group_by(&:product_group_id).each do |product_group_id, products|%>
<!--need to get group name here -->
<%= products[0].product_group.name %>
<% products.each do |product|%>
<%= product.product_name%>
<br>
<% end %>
<% end %>
名前を製品グループに委任することもできます。
class Product
belongs_to :product_group
delegate :name, :to => :product_group, :prefix => true, :allow_nil => true
end
<%= products[0].product_group_name %>