4

私はエンキのブログの宝石をコンテンツ管理システムの一種として使用しています。投稿やページを作成できます。2つのページ(ホームとアーカイブ)が自動的に生成されます。また、他に2つのサンプルページ、サービスと製品を作成しました。さらに多くのページを作成します。したがって、ホームページのすべてのページを一覧表示する場合は、これを実行します

  <% page_links_for_navigation.each do |link| -%>
    <li><%= link_to(link.name, link.url) %></li>
  <% end -%>


Home
Archives
Services
Products

将来的にはもっと多くのページを作成したいと思うかもしれないので、各ページのURLをハードコーディングするよりも、このようにすべてのページをループする方が良いでしょう。

しかし、それらのページの1つ(つまりアーカイブ)を除外したい場合、そのコードをどのように変更すればよいでしょうか。Enkiはそのページを自動的に生成し、削除するオプションを提供しません。さらに、ブログ投稿へのリンクを投稿する場所でアーカイブを使用したいので、アーカイブを削除したくありません。

つまり、このコードから特定のページをどのように除外するのでしょうか。

  <% page_links_for_navigation.each do |link| -%>
    <li><%= link_to(link.name, link.url) %></li>
  <% end -%>

アーカイブのURLはlocalhost:3000/archivesです。

4

2 に答える 2

11

別の方法

<% page_links_for_navigation.each do |link| -%>
   <% next if link.name == 'Archives' %>
   <li><%= link_to(link.name, link.url) %></li>
<% end -%>
于 2012-07-11T06:51:34.377 に答える
5
  <% page_links_for_navigation.each do |link| -%>
    <%  if link.name != 'Archives' %>    
      <li><%= link_to(link.name, link.url) %></li>
    <% end %>
  <% end -%>

または使用するpage_links_for_navigation.reject {|page| page.name == 'Archives'}.each

編集:

さらにページを追加するには、追加するページを追加し!['Archives', 'Home'].include? link.nameて削除します!

読む

http://www.humblelittlerubybook.com/

http://www.ruby-doc.org/docs/ProgrammingRuby/

于 2012-07-11T06:44:03.833 に答える