2012-02-26 3 views
2

Мне не хватает информации о видимости переменных. В моем config.rb я не буду использовать структуру данных для создания динамических страниц:Видимость переменных промежуточных элементов в config.rb и страницах

@pages = [ 
    { 
     id: "cookies", 
     title: "Happy Chocolate Chip Cookies", 
     quote: "These cute cookies are full of sweet chocolate and ready to give you energy!", 
     content: "Orecchini a monachella. Realizzati in fimo, dipinti a mano e rivestiti con vernice lucida." 
    }, 
    ....] 



@pages.each do |p| 
    page "/creations/#{p[:id]}.html", :proxy => "item-template.html", :ignore => true do 
     @tile = p 
    end 
    end 

Генерация страницы идет хорошо, никаких проблем с этим. Но ..

Как я могу получить доступ к этой структуре данных также для обеспечения динамических ссылок на сгенерированные страницы? Я хотел бы быть в состоянии создать индексную страницу (давайте назовем его creations.html) со следующим кодом:

<ul> 
    <% @pages.each do |tile| %> 
     <li><a href="creations/<%= tile[:id]%>.html"> 
      <%= tile[:title] %> 
     </a></li> 
    <% end %> 
</ul> 

ответ

2

Не нужно создавать пользовательский помощник, вы можете использовать файл данных yaml для заполнения вашего шаблона и создания списка ссылок. Позволь мне объяснить.

На том же уровне, что и исходные и сборные каталоги, создайте каталог данных. т.е.

  • сборки
  • источник
  • данные

Внутри этого создайте файл с именем "pages.yml" (к примеру).

Этот файл должен быть специально отформатирован, поэтому будьте осторожны (или используйте yaml parser, чтобы убедиться, что у вас нет ошибок - например, отсутствующая запятая или экранированная цитата).

Используя данные в файле config.rb, примером может быть что-то вроде:

- id: "cookies" 
    title: "Happy Chocolate Chip Cookies" 
    quote: "These cute cookies are full of sweet chocolate and ready to give you energy!" 
    content: "Orecchini a monachella. Realizzati in fimo, dipinti a mano e rivestiti con vernice lucida." 

- id: "bacon" 
    title: "Smoked bacon bits" 
    quote: "everything tastes better with bacon!" 
    content: "blah" 

и т.д ...

Теперь в файле config.rb заменить @ pages.each do | p | с data.pages.each do | p |

data.pages.each перебирает каждого элемента вновь созданного файла YAML

Вы можете просто ссылаться на один и тот же файл в индексном файле (creations.html) следующим образом:

<ul> 
    <% data.pages.each do |tile| %> 
    <li><a href="creations/<%= tile[:id]%>.html"> 
     <%= tile[:title] %> 
    </a></li> 
    <% end %> 
</ul> 

У меня была аналогичная проблема с динамическими страницами, которые вы можете найти на странице here

Надеюсь, это поможет. Удачи!

1

Возможно добавить помощник, который возвращает структуру @pages данных в файле creations.erb. То есть в файле config.rb добавить:

helpers do 
    def dynamic_pages() 
    @pages 
    end 
end 

, а затем в вашем creations.erb есть:

<ul> 
    <% dynamic_pages.each do |tile| %> 
    <li><a href="creations/<%= tile[:id]%>.html"> 
     <%= tile[:title] %> 
    </a></li> 
    <% end %> 
</ul> 

И, если вы хотите, чтобы ссылаться на динамические страницы в ваших динамических страницах, помощник может генерировать этот HTML (!) и вы могли бы назвать ... нет, неважно!

 Смежные вопросы

  • Нет связанных вопросов^_^