2011-11-08 2 views
11

내 테이블 이름이 주식 인 경우 product_id, color_id, storage_id and in_stock 열로 포함됩니다. 내가 저장하여 그룹에 모든 주식을 원하는 해당 제품에 대한레일이있는 열로 컬렉션을 그룹화하는 방법

가 나는 제품 (컬러)를 표시 할 각 저장 : IN_STOCK

어떻게하는 방법을 작성해야 어떻게 렌더링하기 위해?

답변

20
<% Stock.all.group_by(&:storage).each do |storage, products| %> 
    Storage: <%= storage %> 
    <% products.each do |product| %> 
    (<%= product.color_id %>): <%= product.in_stock %> 
    <% end %> 
<% end %> 

편집 : 숫자로 ERB 및 IN_STOCK을 사용하도록 업데이트하지 아니라 부울 예/아니오 열, 그리고 당신이 색깔에 관계를 가정하기 때문에 color.name 대신에 color_id를 사용 .

+0

안녕하세요. 회신 해 주셔서 감사합니다. 콘솔을 통해 예상대로 작동하지만 UI를 통해'# {# <저장소 ID : 1, 이름 : "창고", updated_at : "2011-11-08 21:18:07 "> => [# <재고 ID : 1, product_id : 1, color_id : 10, storage_id : 1, in_stock : 5.0>, # <재고 ID : 586, product_id : 1, color_id : 1, storage_id : 1, in_stock : #>] ... '관계에 대해 불평하는 것 같지만 어느 것이 확실하지 않은 것 같습니다. 어떤 생각? – Gaelle

+0

@Gaelle ERB를 사용하기위한 내 대답과이 설명의 몇 가지 단서를 업데이트했습니다. 더 많은 문제가있는 경우 좀 더 구체적으로 설명하십시오. 오류 메시지가 있으면 게시하십시오. – Unixmonkey

1

정확히 어떻게 구조화되지 않았습니까 (게시물의 정보가 충분하지는 않지만)?

items = Stock.select('color_id, in_stock').group('stocks.storage_id').where(:product_id => foo) 

items.each {|item| puts "(#{lookup_color(item.color_id)}): #{in_stock}" 
관련 문제