2012-02-26 7 views
2

変数の可視性について何か不明です。 私config.rbでは、私は、動的なページを生成するためのデータ構造を使用しています:config.rbとpagesの中規模変数の可視性

@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.erb@pagesデータ構造を返すヘルパーを追加

<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ファイルにpages.each @を交換

- 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ファイル内のデータを使用してdo | p |data.pages.each do | p |新しく作成されたYAMLファイル内の各アイテムをループdata.pages.each

あなたは、単にそのようなあなたのインデックスファイル(creations.html)で同じファイルを参照することができます。

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

私はあなたが参照することができる動的ページのまわりに同様の問題を抱えていたhere

これは役立ちます。がんばろう!

1

:私は、次のコードでインデックスページを(のはcreations.htmlそれを呼びましょう)を作成できるようにしたいと思います。私。あなたのconfig.rbファイルに追加します。

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

をそして、あなたはあなたの動的ページで動的ページを参照したい場合は、ヘルパーがそのHTMLを生成できます。

あなた creations.erb
helpers do 
    def dynamic_pages() 
    @pages 
    end 
end 

、その後は持っています(!)あなたは電話することができます...ナー、決して気にしないでください!

関連する問題