2013-09-18 3 views
0

Учитывая следующий формат YML, возможно или целесообразно отображать URL-адреса, чтобы компоненты, такие как навигационные списки, могли быть заполнены и связаны?Можно ли добавить подпозиции в список YML?

Он может быть заполнен:

products: 
    - Wizzy Widgets 
    - Doohickeys 
    - Thingamabobbers 

оказывает через следующий Еврорадио (где файл находится /data/product_types.yml):

<% data.product_types.products.each do |product_type| %> 
<li><a href="#"><%= product_type %></a></li> 
<% end %> 

для вывода следующей разметки

<li><a href="#">Wizzy Widgets</a></li> 
<li><a href="#">Doohickeys</a></li> 
<li><a href="#">Thingamabobbers</a></li> 

а также можно также связать также

products: 
    - Wizzy Widgets: 
    - url: "/wizzy-widgets" 
    - Doohickeys: 
    - url: "/doohickeys" 
    - Thingamabobbers 
    - url: "/thingamabobbers" 

через ERB как так:

<% data.product_types.products.each do |product_type, product_url| %> 
<li><a href="<%= product_url %>"><%= product_type %></a></li> 
<% end %> 

так, что он выдает следующую разметку?

<li><a href="/wizzy-widgets">Wizzy Widgets</a></li> 
<li><a href="/doohickeys">Doohickeys</a></li> 
<li><a href="/thingamabobbers">Thingamabobbers</a></li> 

Я знаю этот пример не работает. Я просто пытаюсь привести пример того, что я ищу. Это плохая практика? Если да, то как бы вы приблизились к нему?

ответ

2

Если вы заинтересованы в гнездовой данных YML вы можете сделать так, например:

details: 
    - name: "Brady Duncan" 
    url: "brady-duncan" 
    title: "Secretary of Beer Defense" 
    bio: "Has a well rounded set of skills (the right brain) who also aggressively networks and enjoys promoting the brand." 
    favorite: "Happy Amber" 
    - name: "Jeff Hunt" 
    url: "jeff-hunt" 
    title: "Beer 'Can'nesseur" 
    bio: "Has a very deep understanding of the brewing process and the science behind the 'magic'" 
    favorite: "Gnarly Brown" 
    - name: "Kenny McNutt" 
    url: "kenny-mcnutt" 
    title: "The 'Beer'ded Baron" 
    bio: "The man with the financial plan who also has a refined pallet for identifying flavors in beer." 
    - favorite: 
     beer: "Psychopathy" 
     music: "Bluegrass" 
     movies: "Drama" 
1

Попробуйте

require 'yaml' 

yml = YAML.load(%{ 
    products: 
    - 
     name: Wizzy Widgets 
     url: /wizzy-widgets 
    - 
     name: Doohickeys 
     url: /doohickeys 
    - 
     name: Thingamabobbers 
     url: /thingamabobbers 
}) 

yml["products"].each do |product| 
    puts %{<li><a href="#{product["url"]}%>">#{product["name"]}</a></li>} 
end 
+0

Также обратите внимание, что интервал здесь важен. «-» должен быть отступом одним пробелом (а не вкладкой), а за ним следует одно место. И url & name должно быть отступом двумя пробелами (также не вкладками). – techvineet

+0

Вы можете сделать это в .yml-файле? Я должен упомянуть, что это не типичное приложение RoR. Он использует посредника. –

+0

@KevinSuttle Часть Ямля - ​​это бит между 'yml = YAML.load (% {' и '})'. Он только что был помещен в строку Ruby, чтобы продемонстрировать, что она работает. Важный бит для вас, я думаю, использует ключ «name» в хэше. – matt

0

использовать хэш в YML

products: 
    Wizzy Widgets: 
    /wizzy-widgets 
    Doohickeys: 
    /doohickeys 
    Thingamabobbers: 
    /thingamabobbers 

Еврорадио, как ваш второй пример

<% data.product_types.products.each do |product_type, product_url| %> 
    <li><a href="<%= product_url %>"><%= product_type %></a></li> 
<% end %>