2016-10-04 3 views
1

제품 데이터 파일을 기반으로 태그 및 카테고리를 사용하여 데이터 파일을 반복 할 수 있습니까? 예 :Middleman 제품 및 카테고리 YAML 데이터 파일

# toys.yml 
- name: Fire Truck 
    id: 1 
    description: Red 
    category: Automobile 
    url: toys/fire-truck 
    tags: red, truck 

- name: Freight Train 
    id: 2 
    description: Fast delivery mail 
    url: toys/freight-train 
    category: Train 
    tags: freight, train, rail 

페이지를 생성하기 위해 프록시 페이지를 사용하고 있습니다.

data.toys.each do |t| 
    proxy toys.path, "toys.html", locals: { toy: t}, ignore: true 
end 

index.html.erb 템플릿은 다음과 같습니다

<div class="toys"> 
<% data.toys.each do |t| %> 
    <h1><%= t.name %></h1> 
    <p><%= t.desription %></p> 
    <span class="category"><%= t.category %></span> // I would like this to be linked to generate categories based on the toys.yml file 
    <span class="tags"><%= t.tags %></span> // The same as category, generated tag pages based on the toys.yml 
<% end %> 
</div> 

나는이 어떻게 할 수

? 방금 생성해야하는 항목은 다음과 같습니다.

  • 개별 장난감 페이지 firetruck.md. 페이지를 생성하고 카테고리 및 태그 페이지를 만드는 방법으로 메타 데이터를 사용하는 것에 대해 걱정하지 않습니까?
  • 또는 category.yml을 카테고리로 채울 수 있도록 만들려면 toys.yml 고유 ID에 연결하는 방법이 있습니까?

저는 정적 페이지에 대해 배우고 있으며 db 기반 앱을 만들지 않고도이를 구현할 수있는 방법을 알고 싶습니다.

답변

1

당신은 당신이 toys.yml 파일이 카테고리의 목록을 가져 오는 방법에 관해서는

categories.each do |c| 
    proxy "#{c}.html", "category.html", locals: { category: c, toys: data.toys}, ignore: true 
end 

에서 각각의 고유 한 범주의 카테고리 페이지를 만들 수 있도록하는 category.html.erb 파일 및 프록시를 만들 수 있습니다, 당신은 사용할 수 있습니다 data.toys리스트의 표준 루비 연산

categories = data.toys.map {|t| t.category}.uniq 

태그는 비슷하지만 쉼표로 구분 된 목록을 구문 분석해야합니다.

더 복잡한 데이터 유형을 만들거나 고유 Ruby Toy 및 Category 클래스를 정의한 다음 locals 인수에서 프록시 호출에 전달할 수도 있습니다. 예를 들어, 범주 개체에 해당 범주에 속한 장난감 개체의 목록이 포함되도록 할 수 있습니다. 이 경우 루비 Enumerable group_by 메서드가 유용합니다.

+0

안녕하세요 Gerard, 감사합니다! –